From ac2516f5aaa70240dc3e41575824417e42c37235 Mon Sep 17 00:00:00 2001 From: photonstorm Date: Mon, 11 Jul 2016 10:07:56 +0100 Subject: [PATCH] 2.6.1 Release. --- CHANGELOG.md | 6 + README.md | 115 +- build/creature.js | 7207 ++++ build/creature.map | 1 + build/creature.min.js | 6 + build/custom/p2.min.js | 2 +- build/custom/phaser-arcade-physics.js | 10 +- build/custom/phaser-arcade-physics.map | 2 +- build/custom/phaser-arcade-physics.min.js | 12 +- build/custom/phaser-minimum.js | 4 +- build/custom/phaser-minimum.min.js | 4 +- build/custom/phaser-no-physics.js | 4 +- build/custom/phaser-no-physics.min.js | 4 +- build/custom/phaser-split.js | 10 +- build/custom/phaser-split.map | 2 +- build/custom/phaser-split.min.js | 6 +- build/custom/pixi.js | 2 +- build/custom/pixi.min.js | 2 +- build/p2.js | 13613 +++++++ build/p2.map | 1 + build/p2.min.js | 7 + build/phaser-creature.js | 29820 +--------------- build/phaser-creature.map | 2 +- build/phaser-creature.min.js | 48 +- build/phaser.js | 10 +- build/phaser.map | 2 +- build/phaser.min.js | 6 +- build/pixi.js | 9018 +++++ build/pixi.map | 1 + build/pixi.min.js | 6 + docs/PIXI.AbstractFilter.html | 2 +- docs/PIXI.BaseTexture.html | 2 +- docs/PIXI.CanvasBuffer.html | 2 +- docs/PIXI.CanvasGraphics.html | 2 +- docs/PIXI.CanvasMaskManager.html | 2 +- docs/PIXI.CanvasPool.html | 2 +- docs/PIXI.CanvasRenderer.html | 2 +- docs/PIXI.CanvasTinter.html | 2 +- docs/PIXI.ComplexPrimitiveShader.html | 2 +- docs/PIXI.DisplayObjectContainer.html | 2 +- docs/PIXI.EarCut.html | 2 +- docs/PIXI.Event.html | 2 +- docs/PIXI.EventTarget.html | 2 +- docs/PIXI.FilterTexture.html | 2 +- docs/PIXI.Graphics.html | 2 +- docs/PIXI.GraphicsData.html | 2 +- docs/PIXI.PIXI.DisplayObject.html | 2 +- docs/PIXI.PIXI.html | 2 +- docs/PIXI.PixiFastShader.html | 2 +- docs/PIXI.PixiShader.html | 2 +- docs/PIXI.PolyK.html | 2 +- docs/PIXI.PrimitiveShader.html | 2 +- docs/PIXI.RenderTexture.html | 2 +- docs/PIXI.Rope.html | 2 +- docs/PIXI.Sprite.html | 2 +- docs/PIXI.SpriteBatch.html | 2 +- docs/PIXI.Strip.html | 2 +- docs/PIXI.StripShader.html | 2 +- docs/PIXI.Texture.html | 2 +- docs/PIXI.TilingSprite.html | 2 +- docs/PIXI.WebGLBlendModeManager.html | 2 +- docs/PIXI.WebGLFastSpriteBatch.html | 2 +- docs/PIXI.WebGLFilterManager.html | 2 +- docs/PIXI.WebGLRenderer.html | 2 +- docs/PIXI.html | 2 +- docs/Phaser.Animation.html | 2 +- docs/Phaser.AnimationManager.html | 2 +- docs/Phaser.AnimationParser.html | 2 +- docs/Phaser.ArraySet.html | 2 +- docs/Phaser.ArrayUtils.html | 2 +- docs/Phaser.AudioSprite.html | 2 +- docs/Phaser.BitmapData.html | 2 +- docs/Phaser.BitmapText.html | 2 +- docs/Phaser.Bullet.html | 2 +- docs/Phaser.Button.html | 2 +- docs/Phaser.Cache.html | 2 +- docs/Phaser.Camera.html | 2 +- docs/Phaser.Canvas.html | 2 +- docs/Phaser.Circle.html | 2 +- docs/Phaser.Color.html | 2 +- docs/Phaser.Component.Angle.html | 2 +- docs/Phaser.Component.Animation.html | 2 +- docs/Phaser.Component.AutoCull.html | 2 +- docs/Phaser.Component.Bounds.html | 2 +- docs/Phaser.Component.BringToTop.html | 2 +- docs/Phaser.Component.Core.html | 2 +- docs/Phaser.Component.Crop.html | 2 +- docs/Phaser.Component.Delta.html | 2 +- docs/Phaser.Component.Destroy.html | 2 +- docs/Phaser.Component.FixedToCamera.html | 2 +- docs/Phaser.Component.Health.html | 2 +- docs/Phaser.Component.InCamera.html | 2 +- docs/Phaser.Component.InWorld.html | 2 +- docs/Phaser.Component.InputEnabled.html | 2 +- docs/Phaser.Component.LifeSpan.html | 2 +- docs/Phaser.Component.LoadTexture.html | 2 +- docs/Phaser.Component.Overlap.html | 2 +- docs/Phaser.Component.PhysicsBody.html | 2 +- docs/Phaser.Component.Reset.html | 2 +- docs/Phaser.Component.ScaleMinMax.html | 2 +- docs/Phaser.Component.Smoothed.html | 2 +- docs/Phaser.Create.html | 2 +- docs/Phaser.Creature.html | 2 +- docs/Phaser.DOM.html | 2 +- docs/Phaser.Device.html | 2 +- docs/Phaser.DeviceButton.html | 2 +- docs/Phaser.Easing.Back.html | 2 +- docs/Phaser.Easing.Bounce.html | 2 +- docs/Phaser.Easing.Circular.html | 2 +- docs/Phaser.Easing.Cubic.html | 2 +- docs/Phaser.Easing.Elastic.html | 2 +- docs/Phaser.Easing.Exponential.html | 2 +- docs/Phaser.Easing.Linear.html | 2 +- docs/Phaser.Easing.Quadratic.html | 2 +- docs/Phaser.Easing.Quartic.html | 2 +- docs/Phaser.Easing.Quintic.html | 2 +- docs/Phaser.Easing.Sinusoidal.html | 2 +- docs/Phaser.Easing.html | 2 +- docs/Phaser.Ellipse.html | 2 +- docs/Phaser.Events.html | 2 +- docs/Phaser.Filter.html | 2 +- docs/Phaser.FlexGrid.html | 2 +- docs/Phaser.FlexLayer.html | 2 +- docs/Phaser.Frame.html | 2 +- docs/Phaser.FrameData.html | 2 +- docs/Phaser.Game.html | 2 +- docs/Phaser.GameObjectCreator.html | 2 +- docs/Phaser.GameObjectFactory.html | 2 +- docs/Phaser.Gamepad.html | 2 +- docs/Phaser.Graphics.html | 2 +- docs/Phaser.Group.html | 2 +- docs/Phaser.Image.html | 2 +- docs/Phaser.ImageCollection.html | 2 +- docs/Phaser.Input.html | 2 +- docs/Phaser.InputHandler.html | 2 +- docs/Phaser.Key.html | 2 +- docs/Phaser.KeyCode.html | 2 +- docs/Phaser.Keyboard.html | 2 +- docs/Phaser.Line.html | 2 +- docs/Phaser.LinkedList.html | 2 +- docs/Phaser.Loader.html | 2 +- docs/Phaser.LoaderParser.html | 2 +- docs/Phaser.MSPointer.html | 2 +- docs/Phaser.Math.html | 2 +- docs/Phaser.Matrix.html | 2 +- docs/Phaser.Mouse.html | 2 +- docs/Phaser.Net.html | 2 +- docs/Phaser.Particle.html | 2 +- docs/Phaser.Particles.Arcade.Emitter.html | 2 +- docs/Phaser.Particles.Arcade.html | 2 +- docs/Phaser.Particles.html | 2 +- docs/Phaser.Physics.Arcade.Body.html | 2 +- ...haser.Physics.Arcade.TilemapCollision.html | 2 +- docs/Phaser.Physics.Arcade.html | 2 +- docs/Phaser.Physics.Ninja.AABB.html | 2 +- docs/Phaser.Physics.Ninja.Body.html | 2 +- docs/Phaser.Physics.Ninja.Circle.html | 2 +- docs/Phaser.Physics.Ninja.Tile.html | 2 +- docs/Phaser.Physics.Ninja.html | 2 +- docs/Phaser.Physics.P2.Body.html | 2 +- docs/Phaser.Physics.P2.BodyDebug.html | 2 +- docs/Phaser.Physics.P2.CollisionGroup.html | 2 +- docs/Phaser.Physics.P2.ContactMaterial.html | 2 +- .../Phaser.Physics.P2.DistanceConstraint.html | 2 +- docs/Phaser.Physics.P2.FixtureList.html | 2 +- docs/Phaser.Physics.P2.GearConstraint.html | 2 +- docs/Phaser.Physics.P2.InversePointProxy.html | 2 +- docs/Phaser.Physics.P2.LockConstraint.html | 2 +- docs/Phaser.Physics.P2.Material.html | 2 +- docs/Phaser.Physics.P2.PointProxy.html | 2 +- ...Phaser.Physics.P2.PrismaticConstraint.html | 2 +- .../Phaser.Physics.P2.RevoluteConstraint.html | 2 +- docs/Phaser.Physics.P2.RotationalSpring.html | 2 +- docs/Phaser.Physics.P2.Spring.html | 2 +- docs/Phaser.Physics.P2.html | 2 +- docs/Phaser.Physics.html | 2 +- docs/Phaser.Plugin.html | 2 +- docs/Phaser.PluginManager.html | 2 +- docs/Phaser.Point.html | 2 +- docs/Phaser.Pointer.html | 2 +- docs/Phaser.PointerMode.html | 2 +- docs/Phaser.Polygon.html | 2 +- docs/Phaser.QuadTree.html | 2 +- docs/Phaser.RandomDataGenerator.html | 2 +- docs/Phaser.Rectangle.html | 2 +- docs/Phaser.RenderTexture.html | 2 +- docs/Phaser.RequestAnimationFrame.html | 2 +- docs/Phaser.RetroFont.html | 2 +- docs/Phaser.Rope.html | 2 +- docs/Phaser.RoundedRectangle.html | 2 +- docs/Phaser.ScaleManager.html | 2 +- docs/Phaser.Signal.html | 2 +- docs/Phaser.SignalBinding.html | 2 +- docs/Phaser.SinglePad.html | 2 +- docs/Phaser.Sound.html | 2 +- docs/Phaser.SoundManager.html | 2 +- docs/Phaser.Sprite.html | 2 +- docs/Phaser.SpriteBatch.html | 2 +- docs/Phaser.Stage.html | 2 +- docs/Phaser.State.html | 2 +- docs/Phaser.StateManager.html | 2 +- docs/Phaser.Text.html | 2 +- docs/Phaser.Tile.html | 2 +- docs/Phaser.TileSprite.html | 2 +- docs/Phaser.Tilemap.html | 2 +- docs/Phaser.TilemapLayer.html | 2 +- docs/Phaser.TilemapParser.html | 2 +- docs/Phaser.Tileset.html | 2 +- docs/Phaser.Time.html | 2 +- docs/Phaser.Timer.html | 2 +- docs/Phaser.TimerEvent.html | 2 +- docs/Phaser.Touch.html | 2 +- docs/Phaser.Tween.html | 2 +- docs/Phaser.TweenData.html | 2 +- docs/Phaser.TweenManager.html | 2 +- docs/Phaser.Utils.Debug.html | 2 +- docs/Phaser.Utils.html | 2 +- docs/Phaser.Video.html | 2 +- docs/Phaser.Weapon.html | 2 +- docs/Phaser.World.html | 2 +- docs/Phaser.html | 2 +- docs/classes.list.html | 2 +- docs/docs_pixi-jsdoc.js.html | 2 +- docs/global.html | 2 +- docs/index.html | 25 +- docs/namespaces.list.html | 2 +- docs/src_Phaser.js.html | 4 +- docs/src_animation_Animation.js.html | 2 +- docs/src_animation_AnimationManager.js.html | 2 +- docs/src_animation_AnimationParser.js.html | 2 +- docs/src_animation_Frame.js.html | 2 +- docs/src_animation_FrameData.js.html | 2 +- docs/src_core_Camera.js.html | 2 +- docs/src_core_Create.js.html | 2 +- docs/src_core_Filter.js.html | 2 +- docs/src_core_FlexGrid.js.html | 2 +- docs/src_core_FlexLayer.js.html | 2 +- docs/src_core_Game.js.html | 2 +- docs/src_core_Group.js.html | 2 +- docs/src_core_Plugin.js.html | 2 +- docs/src_core_PluginManager.js.html | 2 +- docs/src_core_ScaleManager.js.html | 2 +- docs/src_core_Signal.js.html | 2 +- docs/src_core_SignalBinding.js.html | 2 +- docs/src_core_Stage.js.html | 2 +- docs/src_core_State.js.html | 2 +- docs/src_core_StateManager.js.html | 2 +- docs/src_core_World.js.html | 2 +- docs/src_gameobjects_BitmapData.js.html | 2 +- docs/src_gameobjects_BitmapText.js.html | 2 +- docs/src_gameobjects_Button.js.html | 2 +- docs/src_gameobjects_Creature.js.html | 2 +- .../src_gameobjects_GameObjectCreator.js.html | 2 +- .../src_gameobjects_GameObjectFactory.js.html | 2 +- docs/src_gameobjects_Graphics.js.html | 2 +- docs/src_gameobjects_Image.js.html | 2 +- docs/src_gameobjects_Particle.js.html | 2 +- docs/src_gameobjects_RenderTexture.js.html | 2 +- docs/src_gameobjects_RetroFont.js.html | 2 +- docs/src_gameobjects_Rope.js.html | 2 +- docs/src_gameobjects_Sprite.js.html | 2 +- docs/src_gameobjects_SpriteBatch.js.html | 2 +- docs/src_gameobjects_Text.js.html | 2 +- docs/src_gameobjects_TileSprite.js.html | 2 +- docs/src_gameobjects_Video.js.html | 2 +- docs/src_gameobjects_components_Angle.js.html | 2 +- ...c_gameobjects_components_Animation.js.html | 2 +- ...rc_gameobjects_components_AutoCull.js.html | 2 +- .../src_gameobjects_components_Bounds.js.html | 2 +- ..._gameobjects_components_BringToTop.js.html | 2 +- ...c_gameobjects_components_Component.js.html | 2 +- docs/src_gameobjects_components_Core.js.html | 2 +- docs/src_gameobjects_components_Crop.js.html | 2 +- docs/src_gameobjects_components_Delta.js.html | 2 +- ...src_gameobjects_components_Destroy.js.html | 2 +- .../src_gameobjects_components_Events.js.html | 2 +- ...meobjects_components_FixedToCamera.js.html | 2 +- .../src_gameobjects_components_Health.js.html | 2 +- ...rc_gameobjects_components_InCamera.js.html | 2 +- ...src_gameobjects_components_InWorld.js.html | 2 +- ...ameobjects_components_InputEnabled.js.html | 2 +- ...rc_gameobjects_components_LifeSpan.js.html | 2 +- ...gameobjects_components_LoadTexture.js.html | 2 +- ...src_gameobjects_components_Overlap.js.html | 2 +- ...gameobjects_components_PhysicsBody.js.html | 2 +- docs/src_gameobjects_components_Reset.js.html | 2 +- ...gameobjects_components_ScaleMinMax.js.html | 2 +- ...rc_gameobjects_components_Smoothed.js.html | 2 +- docs/src_geom_Circle.js.html | 2 +- docs/src_geom_Ellipse.js.html | 2 +- docs/src_geom_Line.js.html | 2 +- docs/src_geom_Matrix.js.html | 2 +- docs/src_geom_Point.js.html | 2 +- docs/src_geom_Polygon.js.html | 2 +- docs/src_geom_Rectangle.js.html | 2 +- docs/src_geom_RoundedRectangle.js.html | 2 +- docs/src_input_DeviceButton.js.html | 2 +- docs/src_input_Gamepad.js.html | 2 +- docs/src_input_Input.js.html | 2 +- docs/src_input_InputHandler.js.html | 2 +- docs/src_input_Key.js.html | 2 +- docs/src_input_Keyboard.js.html | 2 +- docs/src_input_MSPointer.js.html | 2 +- docs/src_input_Mouse.js.html | 2 +- docs/src_input_Pointer.js.html | 2 +- docs/src_input_SinglePad.js.html | 2 +- docs/src_input_Touch.js.html | 2 +- docs/src_loader_Cache.js.html | 2 +- docs/src_loader_Loader.js.html | 2 +- docs/src_loader_LoaderParser.js.html | 2 +- docs/src_math_Math.js.html | 2 +- docs/src_math_QuadTree.js.html | 2 +- docs/src_math_RandomDataGenerator.js.html | 2 +- docs/src_net_Net.js.html | 2 +- docs/src_particles_Particles.js.html | 2 +- ...c_particles_arcade_ArcadeParticles.js.html | 2 +- docs/src_particles_arcade_Emitter.js.html | 2 +- docs/src_physics_Physics.js.html | 2 +- docs/src_physics_arcade_Body.js.html | 2 +- ...rc_physics_arcade_TilemapCollision.js.html | 2 +- docs/src_physics_arcade_World.js.html | 8 +- docs/src_physics_ninja_AABB.js.html | 2 +- docs/src_physics_ninja_Body.js.html | 2 +- docs/src_physics_ninja_Circle.js.html | 2 +- docs/src_physics_ninja_Tile.js.html | 2 +- docs/src_physics_ninja_World.js.html | 2 +- docs/src_physics_p2_Body.js.html | 2 +- docs/src_physics_p2_BodyDebug.js.html | 2 +- docs/src_physics_p2_CollisionGroup.js.html | 2 +- docs/src_physics_p2_ContactMaterial.js.html | 2 +- .../src_physics_p2_DistanceConstraint.js.html | 2 +- docs/src_physics_p2_FixtureList.js.html | 2 +- docs/src_physics_p2_GearConstraint.js.html | 2 +- docs/src_physics_p2_InversePointProxy.js.html | 2 +- docs/src_physics_p2_LockConstraint.js.html | 2 +- docs/src_physics_p2_Material.js.html | 2 +- docs/src_physics_p2_PointProxy.js.html | 2 +- ...src_physics_p2_PrismaticConstraint.js.html | 2 +- .../src_physics_p2_RevoluteConstraint.js.html | 2 +- docs/src_physics_p2_RotationalSpring.js.html | 2 +- docs/src_physics_p2_Spring.js.html | 2 +- docs/src_physics_p2_World.js.html | 2 +- docs/src_pixi_Pixi.js.html | 2 +- docs/src_pixi_display_DisplayObject.js.html | 2 +- ...ixi_display_DisplayObjectContainer.js.html | 2 +- docs/src_pixi_display_Sprite.js.html | 2 +- docs/src_pixi_display_SpriteBatch.js.html | 2 +- docs/src_pixi_extras_Rope.js.html | 2 +- docs/src_pixi_extras_Strip.js.html | 2 +- docs/src_pixi_extras_TilingSprite.js.html | 2 +- docs/src_pixi_filters_AbstractFilter.js.html | 2 +- docs/src_pixi_primitives_Graphics.js.html | 2 +- docs/src_pixi_primitives_GraphicsData.js.html | 2 +- ...xi_renderers_canvas_CanvasGraphics.js.html | 2 +- ...xi_renderers_canvas_CanvasRenderer.js.html | 2 +- ...enderers_canvas_utils_CanvasBuffer.js.html | 2 +- ...ers_canvas_utils_CanvasMaskManager.js.html | 2 +- ...enderers_canvas_utils_CanvasTinter.js.html | 2 +- ...pixi_renderers_webgl_WebGLRenderer.js.html | 2 +- ...bgl_shaders_ComplexPrimitiveShader.js.html | 2 +- ...erers_webgl_shaders_PixiFastShader.js.html | 2 +- ...renderers_webgl_shaders_PixiShader.js.html | 2 +- ...rers_webgl_shaders_PrimitiveShader.js.html | 2 +- ...enderers_webgl_shaders_StripShader.js.html | 2 +- ...enderers_webgl_utils_FilterTexture.js.html | 2 +- ..._webgl_utils_WebGLBlendModeManager.js.html | 2 +- ...s_webgl_utils_WebGLFastSpriteBatch.js.html | 2 +- ...ers_webgl_utils_WebGLFilterManager.js.html | 2 +- ...enderers_webgl_utils_WebGLGraphics.js.html | 2 +- ...erers_webgl_utils_WebGLMaskManager.js.html | 2 +- ...ers_webgl_utils_WebGLShaderManager.js.html | 2 +- ...erers_webgl_utils_WebGLShaderUtils.js.html | 2 +- ...erers_webgl_utils_WebGLSpriteBatch.js.html | 2 +- ...rs_webgl_utils_WebGLStencilManager.js.html | 2 +- docs/src_pixi_textures_BaseTexture.js.html | 2 +- docs/src_pixi_textures_RenderTexture.js.html | 2 +- docs/src_pixi_textures_Texture.js.html | 2 +- docs/src_pixi_utils_CanvasPool.js.html | 2 +- docs/src_pixi_utils_EarCut.js.html | 2 +- docs/src_pixi_utils_EventTarget.js.html | 2 +- docs/src_pixi_utils_Polyk.js.html | 2 +- docs/src_pixi_utils_Utils.js.html | 2 +- docs/src_plugins_weapon_Bullet.js.html | 2 +- docs/src_plugins_weapon_WeaponPlugin.js.html | 2 +- docs/src_sound_AudioSprite.js.html | 2 +- docs/src_sound_Sound.js.html | 2 +- docs/src_sound_SoundManager.js.html | 2 +- docs/src_system_Canvas.js.html | 2 +- docs/src_system_DOM.js.html | 2 +- docs/src_system_Device.js.html | 2 +- docs/src_system_RequestAnimationFrame.js.html | 2 +- docs/src_tilemap_ImageCollection.js.html | 2 +- docs/src_tilemap_Tile.js.html | 2 +- docs/src_tilemap_Tilemap.js.html | 2 +- docs/src_tilemap_TilemapLayer.js.html | 2 +- docs/src_tilemap_TilemapParser.js.html | 2 +- docs/src_tilemap_Tileset.js.html | 2 +- docs/src_time_Time.js.html | 2 +- docs/src_time_Timer.js.html | 2 +- docs/src_time_TimerEvent.js.html | 2 +- docs/src_tween_Easing.js.html | 2 +- docs/src_tween_Tween.js.html | 2 +- docs/src_tween_TweenData.js.html | 2 +- docs/src_tween_TweenManager.js.html | 2 +- docs/src_utils_ArraySet.js.html | 2 +- docs/src_utils_ArrayUtils.js.html | 2 +- docs/src_utils_Color.js.html | 2 +- docs/src_utils_Debug.js.html | 2 +- docs/src_utils_LinkedList.js.html | 2 +- docs/src_utils_Utils.js.html | 2 +- src/Phaser.js | 2 +- src/physics/arcade/World.js | 4 +- typescript/phaser.comments.d.ts | 2 +- typescript/phaser.d.ts | 2 +- 414 files changed, 30424 insertions(+), 30310 deletions(-) create mode 100644 build/creature.js create mode 100644 build/creature.map create mode 100644 build/creature.min.js create mode 100644 build/p2.js create mode 100644 build/p2.map create mode 100644 build/p2.min.js create mode 100644 build/pixi.js create mode 100644 build/pixi.map create mode 100644 build/pixi.min.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 381ef30c8..92146a3c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Change Log +## Version 2.6.1 - "Caemlyn" - 11th July 2016 + +### Bug Fixes + +* Fixed `Uncaught TypeError: Cannot set property 'x' of undefined` in Body.js (thanks @ErwanErwan #2607) + ## Version 2.6.0 - "Fal Moran" - 8th July 2016 ### New Features diff --git a/README.md b/README.md index af861d2ae..61b314b38 100644 --- a/README.md +++ b/README.md @@ -38,9 +38,17 @@ Grab the source and join in the fun!
-> In Development +> 11th July 2016 -This is the development branch, where we are building Phaser 2.5.1. Check the [Change Log](#change-log) to see what we've done so far. Or switch to the master branch for the current stable release. +Welcome to Phaser 2.6.1. Our eighth 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](#change-log) to see what we've done so far. Or switch to the master branch for the current stable 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. @@ -105,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 @@ -303,32 +311,87 @@ 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.6.1 - "Caemlyn" - In Development - -### New Features - -* -* -* - -### Updates - -* TypeScript definitions fixes and updates (thanks ) -* Docs typo fixes (thanks ) +## Version 2.6.1 - "Caemlyn" - 11th July 2016 ### Bug Fixes * Fixed `Uncaught TypeError: Cannot set property 'x' of undefined` in Body.js (thanks @ErwanErwan #2607) -* -* + +## 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](https://github.com/photonstorm/phaser/blob/master/CHANGELOG.md). @@ -363,10 +426,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.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 +[get-js]: https://github.com/photonstorm/phaser/releases/download/v2.6.1/phaser.js +[get-minjs]: https://github.com/photonstorm/phaser/releases/download/v2.6.1/phaser.min.js +[get-zip]: https://github.com/photonstorm/phaser/archive/v2.6.1.zip +[get-tgz]: https://github.com/photonstorm/phaser/archive/v2.6.1.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.js b/build/creature.js new file mode 100644 index 000000000..6873e9083 --- /dev/null +++ b/build/creature.js @@ -0,0 +1,7207 @@ +/** + * @fileoverview gl-matrix - High performance matrix and vector operations + * @author Brandon Jones + * @author Colin MacKenzie IV + * @version 2.2.2 + */ + +/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + + +(function(_global) { + "use strict"; + + var shim = {}; + if (typeof(exports) === 'undefined') { + if(typeof define == 'function' && typeof define.amd == 'object' && define.amd) { + shim.exports = {}; + define(function() { + return shim.exports; + }); + } else { + // gl-matrix lives in a browser, define its namespaces in global + shim.exports = typeof(window) !== 'undefined' ? window : _global; + } + } + else { + // gl-matrix lives in commonjs, define its namespaces in exports + shim.exports = exports; + } + + (function(exports) { + /* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + + +if(!GLMAT_EPSILON) { + var GLMAT_EPSILON = 0.000001; +} + +if(!GLMAT_ARRAY_TYPE) { + var GLMAT_ARRAY_TYPE = (typeof Float32Array !== 'undefined') ? Float32Array : Array; +} + +if(!GLMAT_RANDOM) { + var GLMAT_RANDOM = Math.random; +} + +/** + * @class Common utilities + * @name glMatrix + */ +var glMatrix = {}; + +/** + * Sets the type of array used when creating new vectors and matrices + * + * @param {Type} type Array type, such as Float32Array or Array + */ +glMatrix.setMatrixArrayType = function(type) { + GLMAT_ARRAY_TYPE = type; +} + +if(typeof(exports) !== 'undefined') { + exports.glMatrix = glMatrix; +} + +var degree = Math.PI / 180; + +/** +* Convert Degree To Radian +* +* @param {Number} Angle in Degrees +*/ +glMatrix.toRadian = function(a){ + return a * degree; +} +; +/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + +/** + * @class 2 Dimensional Vector + * @name vec2 + */ + +var vec2 = {}; + +/** + * Creates a new, empty vec2 + * + * @returns {vec2} a new 2D vector + */ +vec2.create = function() { + var out = new GLMAT_ARRAY_TYPE(2); + out[0] = 0; + out[1] = 0; + return out; +}; + +/** + * Creates a new vec2 initialized with values from an existing vector + * + * @param {vec2} a vector to clone + * @returns {vec2} a new 2D vector + */ +vec2.clone = function(a) { + var out = new GLMAT_ARRAY_TYPE(2); + out[0] = a[0]; + out[1] = a[1]; + return out; +}; + +/** + * Creates a new vec2 initialized with the given values + * + * @param {Number} x X component + * @param {Number} y Y component + * @returns {vec2} a new 2D vector + */ +vec2.fromValues = function(x, y) { + var out = new GLMAT_ARRAY_TYPE(2); + out[0] = x; + out[1] = y; + return out; +}; + +/** + * Copy the values from one vec2 to another + * + * @param {vec2} out the receiving vector + * @param {vec2} a the source vector + * @returns {vec2} out + */ +vec2.copy = function(out, a) { + out[0] = a[0]; + out[1] = a[1]; + return out; +}; + +/** + * Set the components of a vec2 to the given values + * + * @param {vec2} out the receiving vector + * @param {Number} x X component + * @param {Number} y Y component + * @returns {vec2} out + */ +vec2.set = function(out, x, y) { + out[0] = x; + out[1] = y; + return out; +}; + +/** + * Adds two vec2's + * + * @param {vec2} out the receiving vector + * @param {vec2} a the first operand + * @param {vec2} b the second operand + * @returns {vec2} out + */ +vec2.add = function(out, a, b) { + out[0] = a[0] + b[0]; + out[1] = a[1] + b[1]; + return out; +}; + +/** + * Subtracts vector b from vector a + * + * @param {vec2} out the receiving vector + * @param {vec2} a the first operand + * @param {vec2} b the second operand + * @returns {vec2} out + */ +vec2.subtract = function(out, a, b) { + out[0] = a[0] - b[0]; + out[1] = a[1] - b[1]; + return out; +}; + +/** + * Alias for {@link vec2.subtract} + * @function + */ +vec2.sub = vec2.subtract; + +/** + * Multiplies two vec2's + * + * @param {vec2} out the receiving vector + * @param {vec2} a the first operand + * @param {vec2} b the second operand + * @returns {vec2} out + */ +vec2.multiply = function(out, a, b) { + out[0] = a[0] * b[0]; + out[1] = a[1] * b[1]; + return out; +}; + +/** + * Alias for {@link vec2.multiply} + * @function + */ +vec2.mul = vec2.multiply; + +/** + * Divides two vec2's + * + * @param {vec2} out the receiving vector + * @param {vec2} a the first operand + * @param {vec2} b the second operand + * @returns {vec2} out + */ +vec2.divide = function(out, a, b) { + out[0] = a[0] / b[0]; + out[1] = a[1] / b[1]; + return out; +}; + +/** + * Alias for {@link vec2.divide} + * @function + */ +vec2.div = vec2.divide; + +/** + * Returns the minimum of two vec2's + * + * @param {vec2} out the receiving vector + * @param {vec2} a the first operand + * @param {vec2} b the second operand + * @returns {vec2} out + */ +vec2.min = function(out, a, b) { + out[0] = Math.min(a[0], b[0]); + out[1] = Math.min(a[1], b[1]); + return out; +}; + +/** + * Returns the maximum of two vec2's + * + * @param {vec2} out the receiving vector + * @param {vec2} a the first operand + * @param {vec2} b the second operand + * @returns {vec2} out + */ +vec2.max = function(out, a, b) { + out[0] = Math.max(a[0], b[0]); + out[1] = Math.max(a[1], b[1]); + return out; +}; + +/** + * Scales a vec2 by a scalar number + * + * @param {vec2} out the receiving vector + * @param {vec2} a the vector to scale + * @param {Number} b amount to scale the vector by + * @returns {vec2} out + */ +vec2.scale = function(out, a, b) { + out[0] = a[0] * b; + out[1] = a[1] * b; + return out; +}; + +/** + * Adds two vec2's after scaling the second operand by a scalar value + * + * @param {vec2} out the receiving vector + * @param {vec2} a the first operand + * @param {vec2} b the second operand + * @param {Number} scale the amount to scale b by before adding + * @returns {vec2} out + */ +vec2.scaleAndAdd = function(out, a, b, scale) { + out[0] = a[0] + (b[0] * scale); + out[1] = a[1] + (b[1] * scale); + return out; +}; + +/** + * Calculates the euclidian distance between two vec2's + * + * @param {vec2} a the first operand + * @param {vec2} b the second operand + * @returns {Number} distance between a and b + */ +vec2.distance = function(a, b) { + var x = b[0] - a[0], + y = b[1] - a[1]; + return Math.sqrt(x*x + y*y); +}; + +/** + * Alias for {@link vec2.distance} + * @function + */ +vec2.dist = vec2.distance; + +/** + * Calculates the squared euclidian distance between two vec2's + * + * @param {vec2} a the first operand + * @param {vec2} b the second operand + * @returns {Number} squared distance between a and b + */ +vec2.squaredDistance = function(a, b) { + var x = b[0] - a[0], + y = b[1] - a[1]; + return x*x + y*y; +}; + +/** + * Alias for {@link vec2.squaredDistance} + * @function + */ +vec2.sqrDist = vec2.squaredDistance; + +/** + * Calculates the length of a vec2 + * + * @param {vec2} a vector to calculate length of + * @returns {Number} length of a + */ +vec2.length = function (a) { + var x = a[0], + y = a[1]; + return Math.sqrt(x*x + y*y); +}; + +/** + * Alias for {@link vec2.length} + * @function + */ +vec2.len = vec2.length; + +/** + * Calculates the squared length of a vec2 + * + * @param {vec2} a vector to calculate squared length of + * @returns {Number} squared length of a + */ +vec2.squaredLength = function (a) { + var x = a[0], + y = a[1]; + return x*x + y*y; +}; + +/** + * Alias for {@link vec2.squaredLength} + * @function + */ +vec2.sqrLen = vec2.squaredLength; + +/** + * Negates the components of a vec2 + * + * @param {vec2} out the receiving vector + * @param {vec2} a vector to negate + * @returns {vec2} out + */ +vec2.negate = function(out, a) { + out[0] = -a[0]; + out[1] = -a[1]; + return out; +}; + +/** + * Returns the inverse of the components of a vec2 + * + * @param {vec2} out the receiving vector + * @param {vec2} a vector to invert + * @returns {vec2} out + */ +vec2.inverse = function(out, a) { + out[0] = 1.0 / a[0]; + out[1] = 1.0 / a[1]; + return out; +}; + +/** + * Normalize a vec2 + * + * @param {vec2} out the receiving vector + * @param {vec2} a vector to normalize + * @returns {vec2} out + */ +vec2.normalize = function(out, a) { + var x = a[0], + y = a[1]; + var len = x*x + y*y; + if (len > 0) { + //TODO: evaluate use of glm_invsqrt here? + len = 1 / Math.sqrt(len); + out[0] = a[0] * len; + out[1] = a[1] * len; + } + return out; +}; + +/** + * Calculates the dot product of two vec2's + * + * @param {vec2} a the first operand + * @param {vec2} b the second operand + * @returns {Number} dot product of a and b + */ +vec2.dot = function (a, b) { + return a[0] * b[0] + a[1] * b[1]; +}; + +/** + * Computes the cross product of two vec2's + * Note that the cross product must by definition produce a 3D vector + * + * @param {vec3} out the receiving vector + * @param {vec2} a the first operand + * @param {vec2} b the second operand + * @returns {vec3} out + */ +vec2.cross = function(out, a, b) { + var z = a[0] * b[1] - a[1] * b[0]; + out[0] = out[1] = 0; + out[2] = z; + return out; +}; + +/** + * Performs a linear interpolation between two vec2's + * + * @param {vec2} out the receiving vector + * @param {vec2} a the first operand + * @param {vec2} b the second operand + * @param {Number} t interpolation amount between the two inputs + * @returns {vec2} out + */ +vec2.lerp = function (out, a, b, t) { + var ax = a[0], + ay = a[1]; + out[0] = ax + t * (b[0] - ax); + out[1] = ay + t * (b[1] - ay); + return out; +}; + +/** + * Generates a random vector with the given scale + * + * @param {vec2} out the receiving vector + * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned + * @returns {vec2} out + */ +vec2.random = function (out, scale) { + scale = scale || 1.0; + var r = GLMAT_RANDOM() * 2.0 * Math.PI; + out[0] = Math.cos(r) * scale; + out[1] = Math.sin(r) * scale; + return out; +}; + +/** + * Transforms the vec2 with a mat2 + * + * @param {vec2} out the receiving vector + * @param {vec2} a the vector to transform + * @param {mat2} m matrix to transform with + * @returns {vec2} out + */ +vec2.transformMat2 = function(out, a, m) { + var x = a[0], + y = a[1]; + out[0] = m[0] * x + m[2] * y; + out[1] = m[1] * x + m[3] * y; + return out; +}; + +/** + * Transforms the vec2 with a mat2d + * + * @param {vec2} out the receiving vector + * @param {vec2} a the vector to transform + * @param {mat2d} m matrix to transform with + * @returns {vec2} out + */ +vec2.transformMat2d = function(out, a, m) { + var x = a[0], + y = a[1]; + out[0] = m[0] * x + m[2] * y + m[4]; + out[1] = m[1] * x + m[3] * y + m[5]; + return out; +}; + +/** + * Transforms the vec2 with a mat3 + * 3rd vector component is implicitly '1' + * + * @param {vec2} out the receiving vector + * @param {vec2} a the vector to transform + * @param {mat3} m matrix to transform with + * @returns {vec2} out + */ +vec2.transformMat3 = function(out, a, m) { + var x = a[0], + y = a[1]; + out[0] = m[0] * x + m[3] * y + m[6]; + out[1] = m[1] * x + m[4] * y + m[7]; + return out; +}; + +/** + * Transforms the vec2 with a mat4 + * 3rd vector component is implicitly '0' + * 4th vector component is implicitly '1' + * + * @param {vec2} out the receiving vector + * @param {vec2} a the vector to transform + * @param {mat4} m matrix to transform with + * @returns {vec2} out + */ +vec2.transformMat4 = function(out, a, m) { + var x = a[0], + y = a[1]; + out[0] = m[0] * x + m[4] * y + m[12]; + out[1] = m[1] * x + m[5] * y + m[13]; + return out; +}; + +/** + * Perform some operation over an array of vec2s. + * + * @param {Array} a the array of vectors to iterate over + * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed + * @param {Number} offset Number of elements to skip at the beginning of the array + * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array + * @param {Function} fn Function to call for each vector in the array + * @param {Object} [arg] additional argument to pass to fn + * @returns {Array} a + * @function + */ +vec2.forEach = (function() { + var vec = vec2.create(); + + return function(a, stride, offset, count, fn, arg) { + var i, l; + if(!stride) { + stride = 2; + } + + if(!offset) { + offset = 0; + } + + if(count) { + l = Math.min((count * stride) + offset, a.length); + } else { + l = a.length; + } + + for(i = offset; i < l; i += stride) { + vec[0] = a[i]; vec[1] = a[i+1]; + fn(vec, vec, arg); + a[i] = vec[0]; a[i+1] = vec[1]; + } + + return a; + }; +})(); + +/** + * Returns a string representation of a vector + * + * @param {vec2} vec vector to represent as a string + * @returns {String} string representation of the vector + */ +vec2.str = function (a) { + return 'vec2(' + a[0] + ', ' + a[1] + ')'; +}; + +if(typeof(exports) !== 'undefined') { + exports.vec2 = vec2; +} +; +/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + +/** + * @class 3 Dimensional Vector + * @name vec3 + */ + +var vec3 = {}; + +/** + * Creates a new, empty vec3 + * + * @returns {vec3} a new 3D vector + */ +vec3.create = function() { + var out = new GLMAT_ARRAY_TYPE(3); + out[0] = 0; + out[1] = 0; + out[2] = 0; + return out; +}; + +/** + * Creates a new vec3 initialized with values from an existing vector + * + * @param {vec3} a vector to clone + * @returns {vec3} a new 3D vector + */ +vec3.clone = function(a) { + var out = new GLMAT_ARRAY_TYPE(3); + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + return out; +}; + +/** + * Creates a new vec3 initialized with the given values + * + * @param {Number} x X component + * @param {Number} y Y component + * @param {Number} z Z component + * @returns {vec3} a new 3D vector + */ +vec3.fromValues = function(x, y, z) { + var out = new GLMAT_ARRAY_TYPE(3); + out[0] = x; + out[1] = y; + out[2] = z; + return out; +}; + +/** + * Copy the values from one vec3 to another + * + * @param {vec3} out the receiving vector + * @param {vec3} a the source vector + * @returns {vec3} out + */ +vec3.copy = function(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + return out; +}; + +/** + * Set the components of a vec3 to the given values + * + * @param {vec3} out the receiving vector + * @param {Number} x X component + * @param {Number} y Y component + * @param {Number} z Z component + * @returns {vec3} out + */ +vec3.set = function(out, x, y, z) { + out[0] = x; + out[1] = y; + out[2] = z; + return out; +}; + +/** + * Adds two vec3's + * + * @param {vec3} out the receiving vector + * @param {vec3} a the first operand + * @param {vec3} b the second operand + * @returns {vec3} out + */ +vec3.add = function(out, a, b) { + out[0] = a[0] + b[0]; + out[1] = a[1] + b[1]; + out[2] = a[2] + b[2]; + return out; +}; + +/** + * Subtracts vector b from vector a + * + * @param {vec3} out the receiving vector + * @param {vec3} a the first operand + * @param {vec3} b the second operand + * @returns {vec3} out + */ +vec3.subtract = function(out, a, b) { + out[0] = a[0] - b[0]; + out[1] = a[1] - b[1]; + out[2] = a[2] - b[2]; + return out; +}; + +/** + * Alias for {@link vec3.subtract} + * @function + */ +vec3.sub = vec3.subtract; + +/** + * Multiplies two vec3's + * + * @param {vec3} out the receiving vector + * @param {vec3} a the first operand + * @param {vec3} b the second operand + * @returns {vec3} out + */ +vec3.multiply = function(out, a, b) { + out[0] = a[0] * b[0]; + out[1] = a[1] * b[1]; + out[2] = a[2] * b[2]; + return out; +}; + +/** + * Alias for {@link vec3.multiply} + * @function + */ +vec3.mul = vec3.multiply; + +/** + * Divides two vec3's + * + * @param {vec3} out the receiving vector + * @param {vec3} a the first operand + * @param {vec3} b the second operand + * @returns {vec3} out + */ +vec3.divide = function(out, a, b) { + out[0] = a[0] / b[0]; + out[1] = a[1] / b[1]; + out[2] = a[2] / b[2]; + return out; +}; + +/** + * Alias for {@link vec3.divide} + * @function + */ +vec3.div = vec3.divide; + +/** + * Returns the minimum of two vec3's + * + * @param {vec3} out the receiving vector + * @param {vec3} a the first operand + * @param {vec3} b the second operand + * @returns {vec3} out + */ +vec3.min = function(out, a, b) { + out[0] = Math.min(a[0], b[0]); + out[1] = Math.min(a[1], b[1]); + out[2] = Math.min(a[2], b[2]); + return out; +}; + +/** + * Returns the maximum of two vec3's + * + * @param {vec3} out the receiving vector + * @param {vec3} a the first operand + * @param {vec3} b the second operand + * @returns {vec3} out + */ +vec3.max = function(out, a, b) { + out[0] = Math.max(a[0], b[0]); + out[1] = Math.max(a[1], b[1]); + out[2] = Math.max(a[2], b[2]); + return out; +}; + +/** + * Scales a vec3 by a scalar number + * + * @param {vec3} out the receiving vector + * @param {vec3} a the vector to scale + * @param {Number} b amount to scale the vector by + * @returns {vec3} out + */ +vec3.scale = function(out, a, b) { + out[0] = a[0] * b; + out[1] = a[1] * b; + out[2] = a[2] * b; + return out; +}; + +/** + * Adds two vec3's after scaling the second operand by a scalar value + * + * @param {vec3} out the receiving vector + * @param {vec3} a the first operand + * @param {vec3} b the second operand + * @param {Number} scale the amount to scale b by before adding + * @returns {vec3} out + */ +vec3.scaleAndAdd = function(out, a, b, scale) { + out[0] = a[0] + (b[0] * scale); + out[1] = a[1] + (b[1] * scale); + out[2] = a[2] + (b[2] * scale); + return out; +}; + +/** + * Calculates the euclidian distance between two vec3's + * + * @param {vec3} a the first operand + * @param {vec3} b the second operand + * @returns {Number} distance between a and b + */ +vec3.distance = function(a, b) { + var x = b[0] - a[0], + y = b[1] - a[1], + z = b[2] - a[2]; + return Math.sqrt(x*x + y*y + z*z); +}; + +/** + * Alias for {@link vec3.distance} + * @function + */ +vec3.dist = vec3.distance; + +/** + * Calculates the squared euclidian distance between two vec3's + * + * @param {vec3} a the first operand + * @param {vec3} b the second operand + * @returns {Number} squared distance between a and b + */ +vec3.squaredDistance = function(a, b) { + var x = b[0] - a[0], + y = b[1] - a[1], + z = b[2] - a[2]; + return x*x + y*y + z*z; +}; + +/** + * Alias for {@link vec3.squaredDistance} + * @function + */ +vec3.sqrDist = vec3.squaredDistance; + +/** + * Calculates the length of a vec3 + * + * @param {vec3} a vector to calculate length of + * @returns {Number} length of a + */ +vec3.length = function (a) { + var x = a[0], + y = a[1], + z = a[2]; + return Math.sqrt(x*x + y*y + z*z); +}; + +/** + * Alias for {@link vec3.length} + * @function + */ +vec3.len = vec3.length; + +/** + * Calculates the squared length of a vec3 + * + * @param {vec3} a vector to calculate squared length of + * @returns {Number} squared length of a + */ +vec3.squaredLength = function (a) { + var x = a[0], + y = a[1], + z = a[2]; + return x*x + y*y + z*z; +}; + +/** + * Alias for {@link vec3.squaredLength} + * @function + */ +vec3.sqrLen = vec3.squaredLength; + +/** + * Negates the components of a vec3 + * + * @param {vec3} out the receiving vector + * @param {vec3} a vector to negate + * @returns {vec3} out + */ +vec3.negate = function(out, a) { + out[0] = -a[0]; + out[1] = -a[1]; + out[2] = -a[2]; + return out; +}; + +/** + * Returns the inverse of the components of a vec3 + * + * @param {vec3} out the receiving vector + * @param {vec3} a vector to invert + * @returns {vec3} out + */ +vec3.inverse = function(out, a) { + out[0] = 1.0 / a[0]; + out[1] = 1.0 / a[1]; + out[2] = 1.0 / a[2]; + return out; +}; + +/** + * Normalize a vec3 + * + * @param {vec3} out the receiving vector + * @param {vec3} a vector to normalize + * @returns {vec3} out + */ +vec3.normalize = function(out, a) { + var x = a[0], + y = a[1], + z = a[2]; + var len = x*x + y*y + z*z; + if (len > 0) { + //TODO: evaluate use of glm_invsqrt here? + len = 1 / Math.sqrt(len); + out[0] = a[0] * len; + out[1] = a[1] * len; + out[2] = a[2] * len; + } + return out; +}; + +/** + * Calculates the dot product of two vec3's + * + * @param {vec3} a the first operand + * @param {vec3} b the second operand + * @returns {Number} dot product of a and b + */ +vec3.dot = function (a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; +}; + +/** + * Computes the cross product of two vec3's + * + * @param {vec3} out the receiving vector + * @param {vec3} a the first operand + * @param {vec3} b the second operand + * @returns {vec3} out + */ +vec3.cross = function(out, a, b) { + var ax = a[0], ay = a[1], az = a[2], + bx = b[0], by = b[1], bz = b[2]; + + out[0] = ay * bz - az * by; + out[1] = az * bx - ax * bz; + out[2] = ax * by - ay * bx; + return out; +}; + +/** + * Performs a linear interpolation between two vec3's + * + * @param {vec3} out the receiving vector + * @param {vec3} a the first operand + * @param {vec3} b the second operand + * @param {Number} t interpolation amount between the two inputs + * @returns {vec3} out + */ +vec3.lerp = function (out, a, b, t) { + var ax = a[0], + ay = a[1], + az = a[2]; + out[0] = ax + t * (b[0] - ax); + out[1] = ay + t * (b[1] - ay); + out[2] = az + t * (b[2] - az); + return out; +}; + +/** + * Generates a random vector with the given scale + * + * @param {vec3} out the receiving vector + * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned + * @returns {vec3} out + */ +vec3.random = function (out, scale) { + scale = scale || 1.0; + + var r = GLMAT_RANDOM() * 2.0 * Math.PI; + var z = (GLMAT_RANDOM() * 2.0) - 1.0; + var zScale = Math.sqrt(1.0-z*z) * scale; + + out[0] = Math.cos(r) * zScale; + out[1] = Math.sin(r) * zScale; + out[2] = z * scale; + return out; +}; + +/** + * Transforms the vec3 with a mat4. + * 4th vector component is implicitly '1' + * + * @param {vec3} out the receiving vector + * @param {vec3} a the vector to transform + * @param {mat4} m matrix to transform with + * @returns {vec3} out + */ +vec3.transformMat4 = function(out, a, m) { + var x = a[0], y = a[1], z = a[2], + w = m[3] * x + m[7] * y + m[11] * z + m[15]; + w = w || 1.0; + out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w; + out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w; + out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w; + return out; +}; + +/** + * Transforms the vec3 with a mat3. + * + * @param {vec3} out the receiving vector + * @param {vec3} a the vector to transform + * @param {mat4} m the 3x3 matrix to transform with + * @returns {vec3} out + */ +vec3.transformMat3 = function(out, a, m) { + var x = a[0], y = a[1], z = a[2]; + out[0] = x * m[0] + y * m[3] + z * m[6]; + out[1] = x * m[1] + y * m[4] + z * m[7]; + out[2] = x * m[2] + y * m[5] + z * m[8]; + return out; +}; + +/** + * Transforms the vec3 with a quat + * + * @param {vec3} out the receiving vector + * @param {vec3} a the vector to transform + * @param {quat} q quaternion to transform with + * @returns {vec3} out + */ +vec3.transformQuat = function(out, a, q) { + // benchmarks: http://jsperf.com/quaternion-transform-vec3-implementations + + var x = a[0], y = a[1], z = a[2], + qx = q[0], qy = q[1], qz = q[2], qw = q[3], + + // calculate quat * vec + ix = qw * x + qy * z - qz * y, + iy = qw * y + qz * x - qx * z, + iz = qw * z + qx * y - qy * x, + iw = -qx * x - qy * y - qz * z; + + // calculate result * inverse quat + out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy; + out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz; + out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx; + return out; +}; + +/** + * Rotate a 3D vector around the x-axis + * @param {vec3} out The receiving vec3 + * @param {vec3} a The vec3 point to rotate + * @param {vec3} b The origin of the rotation + * @param {Number} c The angle of rotation + * @returns {vec3} out + */ +vec3.rotateX = function(out, a, b, c){ + var p = [], r=[]; + //Translate point to the origin + p[0] = a[0] - b[0]; + p[1] = a[1] - b[1]; + p[2] = a[2] - b[2]; + + //perform rotation + r[0] = p[0]; + r[1] = p[1]*Math.cos(c) - p[2]*Math.sin(c); + r[2] = p[1]*Math.sin(c) + p[2]*Math.cos(c); + + //translate to correct position + out[0] = r[0] + b[0]; + out[1] = r[1] + b[1]; + out[2] = r[2] + b[2]; + + return out; +}; + +/** + * Rotate a 3D vector around the y-axis + * @param {vec3} out The receiving vec3 + * @param {vec3} a The vec3 point to rotate + * @param {vec3} b The origin of the rotation + * @param {Number} c The angle of rotation + * @returns {vec3} out + */ +vec3.rotateY = function(out, a, b, c){ + var p = [], r=[]; + //Translate point to the origin + p[0] = a[0] - b[0]; + p[1] = a[1] - b[1]; + p[2] = a[2] - b[2]; + + //perform rotation + r[0] = p[2]*Math.sin(c) + p[0]*Math.cos(c); + r[1] = p[1]; + r[2] = p[2]*Math.cos(c) - p[0]*Math.sin(c); + + //translate to correct position + out[0] = r[0] + b[0]; + out[1] = r[1] + b[1]; + out[2] = r[2] + b[2]; + + return out; +}; + +/** + * Rotate a 3D vector around the z-axis + * @param {vec3} out The receiving vec3 + * @param {vec3} a The vec3 point to rotate + * @param {vec3} b The origin of the rotation + * @param {Number} c The angle of rotation + * @returns {vec3} out + */ +vec3.rotateZ = function(out, a, b, c){ + var p = [], r=[]; + //Translate point to the origin + p[0] = a[0] - b[0]; + p[1] = a[1] - b[1]; + p[2] = a[2] - b[2]; + + //perform rotation + r[0] = p[0]*Math.cos(c) - p[1]*Math.sin(c); + r[1] = p[0]*Math.sin(c) + p[1]*Math.cos(c); + r[2] = p[2]; + + //translate to correct position + out[0] = r[0] + b[0]; + out[1] = r[1] + b[1]; + out[2] = r[2] + b[2]; + + return out; +}; + +/** + * Perform some operation over an array of vec3s. + * + * @param {Array} a the array of vectors to iterate over + * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed + * @param {Number} offset Number of elements to skip at the beginning of the array + * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array + * @param {Function} fn Function to call for each vector in the array + * @param {Object} [arg] additional argument to pass to fn + * @returns {Array} a + * @function + */ +vec3.forEach = (function() { + var vec = vec3.create(); + + return function(a, stride, offset, count, fn, arg) { + var i, l; + if(!stride) { + stride = 3; + } + + if(!offset) { + offset = 0; + } + + if(count) { + l = Math.min((count * stride) + offset, a.length); + } else { + l = a.length; + } + + for(i = offset; i < l; i += stride) { + vec[0] = a[i]; vec[1] = a[i+1]; vec[2] = a[i+2]; + fn(vec, vec, arg); + a[i] = vec[0]; a[i+1] = vec[1]; a[i+2] = vec[2]; + } + + return a; + }; +})(); + +/** + * Returns a string representation of a vector + * + * @param {vec3} vec vector to represent as a string + * @returns {String} string representation of the vector + */ +vec3.str = function (a) { + return 'vec3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ')'; +}; + +if(typeof(exports) !== 'undefined') { + exports.vec3 = vec3; +} +; +/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + +/** + * @class 4 Dimensional Vector + * @name vec4 + */ + +var vec4 = {}; + +/** + * Creates a new, empty vec4 + * + * @returns {vec4} a new 4D vector + */ +vec4.create = function() { + var out = new GLMAT_ARRAY_TYPE(4); + out[0] = 0; + out[1] = 0; + out[2] = 0; + out[3] = 0; + return out; +}; + +/** + * Creates a new vec4 initialized with values from an existing vector + * + * @param {vec4} a vector to clone + * @returns {vec4} a new 4D vector + */ +vec4.clone = function(a) { + var out = new GLMAT_ARRAY_TYPE(4); + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + return out; +}; + +/** + * Creates a new vec4 initialized with the given values + * + * @param {Number} x X component + * @param {Number} y Y component + * @param {Number} z Z component + * @param {Number} w W component + * @returns {vec4} a new 4D vector + */ +vec4.fromValues = function(x, y, z, w) { + var out = new GLMAT_ARRAY_TYPE(4); + out[0] = x; + out[1] = y; + out[2] = z; + out[3] = w; + return out; +}; + +/** + * Copy the values from one vec4 to another + * + * @param {vec4} out the receiving vector + * @param {vec4} a the source vector + * @returns {vec4} out + */ +vec4.copy = function(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + return out; +}; + +/** + * Set the components of a vec4 to the given values + * + * @param {vec4} out the receiving vector + * @param {Number} x X component + * @param {Number} y Y component + * @param {Number} z Z component + * @param {Number} w W component + * @returns {vec4} out + */ +vec4.set = function(out, x, y, z, w) { + out[0] = x; + out[1] = y; + out[2] = z; + out[3] = w; + return out; +}; + +/** + * Adds two vec4's + * + * @param {vec4} out the receiving vector + * @param {vec4} a the first operand + * @param {vec4} b the second operand + * @returns {vec4} out + */ +vec4.add = function(out, a, b) { + out[0] = a[0] + b[0]; + out[1] = a[1] + b[1]; + out[2] = a[2] + b[2]; + out[3] = a[3] + b[3]; + return out; +}; + +/** + * Subtracts vector b from vector a + * + * @param {vec4} out the receiving vector + * @param {vec4} a the first operand + * @param {vec4} b the second operand + * @returns {vec4} out + */ +vec4.subtract = function(out, a, b) { + out[0] = a[0] - b[0]; + out[1] = a[1] - b[1]; + out[2] = a[2] - b[2]; + out[3] = a[3] - b[3]; + return out; +}; + +/** + * Alias for {@link vec4.subtract} + * @function + */ +vec4.sub = vec4.subtract; + +/** + * Multiplies two vec4's + * + * @param {vec4} out the receiving vector + * @param {vec4} a the first operand + * @param {vec4} b the second operand + * @returns {vec4} out + */ +vec4.multiply = function(out, a, b) { + out[0] = a[0] * b[0]; + out[1] = a[1] * b[1]; + out[2] = a[2] * b[2]; + out[3] = a[3] * b[3]; + return out; +}; + +/** + * Alias for {@link vec4.multiply} + * @function + */ +vec4.mul = vec4.multiply; + +/** + * Divides two vec4's + * + * @param {vec4} out the receiving vector + * @param {vec4} a the first operand + * @param {vec4} b the second operand + * @returns {vec4} out + */ +vec4.divide = function(out, a, b) { + out[0] = a[0] / b[0]; + out[1] = a[1] / b[1]; + out[2] = a[2] / b[2]; + out[3] = a[3] / b[3]; + return out; +}; + +/** + * Alias for {@link vec4.divide} + * @function + */ +vec4.div = vec4.divide; + +/** + * Returns the minimum of two vec4's + * + * @param {vec4} out the receiving vector + * @param {vec4} a the first operand + * @param {vec4} b the second operand + * @returns {vec4} out + */ +vec4.min = function(out, a, b) { + out[0] = Math.min(a[0], b[0]); + out[1] = Math.min(a[1], b[1]); + out[2] = Math.min(a[2], b[2]); + out[3] = Math.min(a[3], b[3]); + return out; +}; + +/** + * Returns the maximum of two vec4's + * + * @param {vec4} out the receiving vector + * @param {vec4} a the first operand + * @param {vec4} b the second operand + * @returns {vec4} out + */ +vec4.max = function(out, a, b) { + out[0] = Math.max(a[0], b[0]); + out[1] = Math.max(a[1], b[1]); + out[2] = Math.max(a[2], b[2]); + out[3] = Math.max(a[3], b[3]); + return out; +}; + +/** + * Scales a vec4 by a scalar number + * + * @param {vec4} out the receiving vector + * @param {vec4} a the vector to scale + * @param {Number} b amount to scale the vector by + * @returns {vec4} out + */ +vec4.scale = function(out, a, b) { + out[0] = a[0] * b; + out[1] = a[1] * b; + out[2] = a[2] * b; + out[3] = a[3] * b; + return out; +}; + +/** + * Adds two vec4's after scaling the second operand by a scalar value + * + * @param {vec4} out the receiving vector + * @param {vec4} a the first operand + * @param {vec4} b the second operand + * @param {Number} scale the amount to scale b by before adding + * @returns {vec4} out + */ +vec4.scaleAndAdd = function(out, a, b, scale) { + out[0] = a[0] + (b[0] * scale); + out[1] = a[1] + (b[1] * scale); + out[2] = a[2] + (b[2] * scale); + out[3] = a[3] + (b[3] * scale); + return out; +}; + +/** + * Calculates the euclidian distance between two vec4's + * + * @param {vec4} a the first operand + * @param {vec4} b the second operand + * @returns {Number} distance between a and b + */ +vec4.distance = function(a, b) { + var x = b[0] - a[0], + y = b[1] - a[1], + z = b[2] - a[2], + w = b[3] - a[3]; + return Math.sqrt(x*x + y*y + z*z + w*w); +}; + +/** + * Alias for {@link vec4.distance} + * @function + */ +vec4.dist = vec4.distance; + +/** + * Calculates the squared euclidian distance between two vec4's + * + * @param {vec4} a the first operand + * @param {vec4} b the second operand + * @returns {Number} squared distance between a and b + */ +vec4.squaredDistance = function(a, b) { + var x = b[0] - a[0], + y = b[1] - a[1], + z = b[2] - a[2], + w = b[3] - a[3]; + return x*x + y*y + z*z + w*w; +}; + +/** + * Alias for {@link vec4.squaredDistance} + * @function + */ +vec4.sqrDist = vec4.squaredDistance; + +/** + * Calculates the length of a vec4 + * + * @param {vec4} a vector to calculate length of + * @returns {Number} length of a + */ +vec4.length = function (a) { + var x = a[0], + y = a[1], + z = a[2], + w = a[3]; + return Math.sqrt(x*x + y*y + z*z + w*w); +}; + +/** + * Alias for {@link vec4.length} + * @function + */ +vec4.len = vec4.length; + +/** + * Calculates the squared length of a vec4 + * + * @param {vec4} a vector to calculate squared length of + * @returns {Number} squared length of a + */ +vec4.squaredLength = function (a) { + var x = a[0], + y = a[1], + z = a[2], + w = a[3]; + return x*x + y*y + z*z + w*w; +}; + +/** + * Alias for {@link vec4.squaredLength} + * @function + */ +vec4.sqrLen = vec4.squaredLength; + +/** + * Negates the components of a vec4 + * + * @param {vec4} out the receiving vector + * @param {vec4} a vector to negate + * @returns {vec4} out + */ +vec4.negate = function(out, a) { + out[0] = -a[0]; + out[1] = -a[1]; + out[2] = -a[2]; + out[3] = -a[3]; + return out; +}; + +/** + * Returns the inverse of the components of a vec4 + * + * @param {vec4} out the receiving vector + * @param {vec4} a vector to invert + * @returns {vec4} out + */ +vec4.inverse = function(out, a) { + out[0] = 1.0 / a[0]; + out[1] = 1.0 / a[1]; + out[2] = 1.0 / a[2]; + out[3] = 1.0 / a[3]; + return out; +}; + +/** + * Normalize a vec4 + * + * @param {vec4} out the receiving vector + * @param {vec4} a vector to normalize + * @returns {vec4} out + */ +vec4.normalize = function(out, a) { + var x = a[0], + y = a[1], + z = a[2], + w = a[3]; + var len = x*x + y*y + z*z + w*w; + if (len > 0) { + len = 1 / Math.sqrt(len); + out[0] = a[0] * len; + out[1] = a[1] * len; + out[2] = a[2] * len; + out[3] = a[3] * len; + } + return out; +}; + +/** + * Calculates the dot product of two vec4's + * + * @param {vec4} a the first operand + * @param {vec4} b the second operand + * @returns {Number} dot product of a and b + */ +vec4.dot = function (a, b) { + return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]; +}; + +/** + * Performs a linear interpolation between two vec4's + * + * @param {vec4} out the receiving vector + * @param {vec4} a the first operand + * @param {vec4} b the second operand + * @param {Number} t interpolation amount between the two inputs + * @returns {vec4} out + */ +vec4.lerp = function (out, a, b, t) { + var ax = a[0], + ay = a[1], + az = a[2], + aw = a[3]; + out[0] = ax + t * (b[0] - ax); + out[1] = ay + t * (b[1] - ay); + out[2] = az + t * (b[2] - az); + out[3] = aw + t * (b[3] - aw); + return out; +}; + +/** + * Generates a random vector with the given scale + * + * @param {vec4} out the receiving vector + * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned + * @returns {vec4} out + */ +vec4.random = function (out, scale) { + scale = scale || 1.0; + + //TODO: This is a pretty awful way of doing this. Find something better. + out[0] = GLMAT_RANDOM(); + out[1] = GLMAT_RANDOM(); + out[2] = GLMAT_RANDOM(); + out[3] = GLMAT_RANDOM(); + vec4.normalize(out, out); + vec4.scale(out, out, scale); + return out; +}; + +/** + * Transforms the vec4 with a mat4. + * + * @param {vec4} out the receiving vector + * @param {vec4} a the vector to transform + * @param {mat4} m matrix to transform with + * @returns {vec4} out + */ +vec4.transformMat4 = function(out, a, m) { + var x = a[0], y = a[1], z = a[2], w = a[3]; + out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w; + out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w; + out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w; + out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w; + return out; +}; + +/** + * Transforms the vec4 with a quat + * + * @param {vec4} out the receiving vector + * @param {vec4} a the vector to transform + * @param {quat} q quaternion to transform with + * @returns {vec4} out + */ +vec4.transformQuat = function(out, a, q) { + var x = a[0], y = a[1], z = a[2], + qx = q[0], qy = q[1], qz = q[2], qw = q[3], + + // calculate quat * vec + ix = qw * x + qy * z - qz * y, + iy = qw * y + qz * x - qx * z, + iz = qw * z + qx * y - qy * x, + iw = -qx * x - qy * y - qz * z; + + // calculate result * inverse quat + out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy; + out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz; + out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx; + return out; +}; + +/** + * Perform some operation over an array of vec4s. + * + * @param {Array} a the array of vectors to iterate over + * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed + * @param {Number} offset Number of elements to skip at the beginning of the array + * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array + * @param {Function} fn Function to call for each vector in the array + * @param {Object} [arg] additional argument to pass to fn + * @returns {Array} a + * @function + */ +vec4.forEach = (function() { + var vec = vec4.create(); + + return function(a, stride, offset, count, fn, arg) { + var i, l; + if(!stride) { + stride = 4; + } + + if(!offset) { + offset = 0; + } + + if(count) { + l = Math.min((count * stride) + offset, a.length); + } else { + l = a.length; + } + + for(i = offset; i < l; i += stride) { + vec[0] = a[i]; vec[1] = a[i+1]; vec[2] = a[i+2]; vec[3] = a[i+3]; + fn(vec, vec, arg); + a[i] = vec[0]; a[i+1] = vec[1]; a[i+2] = vec[2]; a[i+3] = vec[3]; + } + + return a; + }; +})(); + +/** + * Returns a string representation of a vector + * + * @param {vec4} vec vector to represent as a string + * @returns {String} string representation of the vector + */ +vec4.str = function (a) { + return 'vec4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')'; +}; + +if(typeof(exports) !== 'undefined') { + exports.vec4 = vec4; +} +; +/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + +/** + * @class 2x2 Matrix + * @name mat2 + */ + +var mat2 = {}; + +/** + * Creates a new identity mat2 + * + * @returns {mat2} a new 2x2 matrix + */ +mat2.create = function() { + var out = new GLMAT_ARRAY_TYPE(4); + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 1; + return out; +}; + +/** + * Creates a new mat2 initialized with values from an existing matrix + * + * @param {mat2} a matrix to clone + * @returns {mat2} a new 2x2 matrix + */ +mat2.clone = function(a) { + var out = new GLMAT_ARRAY_TYPE(4); + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + return out; +}; + +/** + * Copy the values from one mat2 to another + * + * @param {mat2} out the receiving matrix + * @param {mat2} a the source matrix + * @returns {mat2} out + */ +mat2.copy = function(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + return out; +}; + +/** + * Set a mat2 to the identity matrix + * + * @param {mat2} out the receiving matrix + * @returns {mat2} out + */ +mat2.identity = function(out) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 1; + return out; +}; + +/** + * Transpose the values of a mat2 + * + * @param {mat2} out the receiving matrix + * @param {mat2} a the source matrix + * @returns {mat2} out + */ +mat2.transpose = function(out, a) { + // If we are transposing ourselves we can skip a few steps but have to cache some values + if (out === a) { + var a1 = a[1]; + out[1] = a[2]; + out[2] = a1; + } else { + out[0] = a[0]; + out[1] = a[2]; + out[2] = a[1]; + out[3] = a[3]; + } + + return out; +}; + +/** + * Inverts a mat2 + * + * @param {mat2} out the receiving matrix + * @param {mat2} a the source matrix + * @returns {mat2} out + */ +mat2.invert = function(out, a) { + var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], + + // Calculate the determinant + det = a0 * a3 - a2 * a1; + + if (!det) { + return null; + } + det = 1.0 / det; + + out[0] = a3 * det; + out[1] = -a1 * det; + out[2] = -a2 * det; + out[3] = a0 * det; + + return out; +}; + +/** + * Calculates the adjugate of a mat2 + * + * @param {mat2} out the receiving matrix + * @param {mat2} a the source matrix + * @returns {mat2} out + */ +mat2.adjoint = function(out, a) { + // Caching this value is nessecary if out == a + var a0 = a[0]; + out[0] = a[3]; + out[1] = -a[1]; + out[2] = -a[2]; + out[3] = a0; + + return out; +}; + +/** + * Calculates the determinant of a mat2 + * + * @param {mat2} a the source matrix + * @returns {Number} determinant of a + */ +mat2.determinant = function (a) { + return a[0] * a[3] - a[2] * a[1]; +}; + +/** + * Multiplies two mat2's + * + * @param {mat2} out the receiving matrix + * @param {mat2} a the first operand + * @param {mat2} b the second operand + * @returns {mat2} out + */ +mat2.multiply = function (out, a, b) { + var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; + var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; + out[0] = a0 * b0 + a2 * b1; + out[1] = a1 * b0 + a3 * b1; + out[2] = a0 * b2 + a2 * b3; + out[3] = a1 * b2 + a3 * b3; + return out; +}; + +/** + * Alias for {@link mat2.multiply} + * @function + */ +mat2.mul = mat2.multiply; + +/** + * Rotates a mat2 by the given angle + * + * @param {mat2} out the receiving matrix + * @param {mat2} a the matrix to rotate + * @param {Number} rad the angle to rotate the matrix by + * @returns {mat2} out + */ +mat2.rotate = function (out, a, rad) { + var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], + s = Math.sin(rad), + c = Math.cos(rad); + out[0] = a0 * c + a2 * s; + out[1] = a1 * c + a3 * s; + out[2] = a0 * -s + a2 * c; + out[3] = a1 * -s + a3 * c; + return out; +}; + +/** + * Scales the mat2 by the dimensions in the given vec2 + * + * @param {mat2} out the receiving matrix + * @param {mat2} a the matrix to rotate + * @param {vec2} v the vec2 to scale the matrix by + * @returns {mat2} out + **/ +mat2.scale = function(out, a, v) { + var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], + v0 = v[0], v1 = v[1]; + out[0] = a0 * v0; + out[1] = a1 * v0; + out[2] = a2 * v1; + out[3] = a3 * v1; + return out; +}; + +/** + * Returns a string representation of a mat2 + * + * @param {mat2} mat matrix to represent as a string + * @returns {String} string representation of the matrix + */ +mat2.str = function (a) { + return 'mat2(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')'; +}; + +/** + * Returns Frobenius norm of a mat2 + * + * @param {mat2} a the matrix to calculate Frobenius norm of + * @returns {Number} Frobenius norm + */ +mat2.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))) +}; + +/** + * Returns L, D and U matrices (Lower triangular, Diagonal and Upper triangular) by factorizing the input matrix + * @param {mat2} L the lower triangular matrix + * @param {mat2} D the diagonal matrix + * @param {mat2} U the upper triangular matrix + * @param {mat2} a the input matrix to factorize + */ + +mat2.LDU = function (L, D, U, a) { + L[2] = a[2]/a[0]; + U[0] = a[0]; + U[1] = a[1]; + U[3] = a[3] - L[2] * U[1]; + return [L, D, U]; +}; + +if(typeof(exports) !== 'undefined') { + exports.mat2 = mat2; +} +; +/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + +/** + * @class 2x3 Matrix + * @name mat2d + * + * @description + * A mat2d contains six elements defined as: + *
+ * [a, c, tx,
+ *  b, d, ty]
+ * 
+ * This is a short form for the 3x3 matrix: + *
+ * [a, c, tx,
+ *  b, d, ty,
+ *  0, 0, 1]
+ * 
+ * The last row is ignored so the array is shorter and operations are faster. + */ + +var mat2d = {}; + +/** + * Creates a new identity mat2d + * + * @returns {mat2d} a new 2x3 matrix + */ +mat2d.create = function() { + var out = new GLMAT_ARRAY_TYPE(6); + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 1; + out[4] = 0; + out[5] = 0; + return out; +}; + +/** + * Creates a new mat2d initialized with values from an existing matrix + * + * @param {mat2d} a matrix to clone + * @returns {mat2d} a new 2x3 matrix + */ +mat2d.clone = function(a) { + var out = new GLMAT_ARRAY_TYPE(6); + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[4] = a[4]; + out[5] = a[5]; + return out; +}; + +/** + * Copy the values from one mat2d to another + * + * @param {mat2d} out the receiving matrix + * @param {mat2d} a the source matrix + * @returns {mat2d} out + */ +mat2d.copy = function(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[4] = a[4]; + out[5] = a[5]; + return out; +}; + +/** + * Set a mat2d to the identity matrix + * + * @param {mat2d} out the receiving matrix + * @returns {mat2d} out + */ +mat2d.identity = function(out) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 1; + out[4] = 0; + out[5] = 0; + return out; +}; + +/** + * Inverts a mat2d + * + * @param {mat2d} out the receiving matrix + * @param {mat2d} a the source matrix + * @returns {mat2d} out + */ +mat2d.invert = function(out, a) { + var aa = a[0], ab = a[1], ac = a[2], ad = a[3], + atx = a[4], aty = a[5]; + + var det = aa * ad - ab * ac; + if(!det){ + return null; + } + det = 1.0 / det; + + out[0] = ad * det; + out[1] = -ab * det; + out[2] = -ac * det; + out[3] = aa * det; + out[4] = (ac * aty - ad * atx) * det; + out[5] = (ab * atx - aa * aty) * det; + return out; +}; + +/** + * Calculates the determinant of a mat2d + * + * @param {mat2d} a the source matrix + * @returns {Number} determinant of a + */ +mat2d.determinant = function (a) { + return a[0] * a[3] - a[1] * a[2]; +}; + +/** + * Multiplies two mat2d's + * + * @param {mat2d} out the receiving matrix + * @param {mat2d} a the first operand + * @param {mat2d} b the second operand + * @returns {mat2d} out + */ +mat2d.multiply = function (out, a, b) { + var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], + b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5]; + out[0] = a0 * b0 + a2 * b1; + out[1] = a1 * b0 + a3 * b1; + out[2] = a0 * b2 + a2 * b3; + out[3] = a1 * b2 + a3 * b3; + out[4] = a0 * b4 + a2 * b5 + a4; + out[5] = a1 * b4 + a3 * b5 + a5; + return out; +}; + +/** + * Alias for {@link mat2d.multiply} + * @function + */ +mat2d.mul = mat2d.multiply; + + +/** + * Rotates a mat2d by the given angle + * + * @param {mat2d} out the receiving matrix + * @param {mat2d} a the matrix to rotate + * @param {Number} rad the angle to rotate the matrix by + * @returns {mat2d} out + */ +mat2d.rotate = function (out, a, rad) { + var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], + s = Math.sin(rad), + c = Math.cos(rad); + out[0] = a0 * c + a2 * s; + out[1] = a1 * c + a3 * s; + out[2] = a0 * -s + a2 * c; + out[3] = a1 * -s + a3 * c; + out[4] = a4; + out[5] = a5; + return out; +}; + +/** + * Scales the mat2d by the dimensions in the given vec2 + * + * @param {mat2d} out the receiving matrix + * @param {mat2d} a the matrix to translate + * @param {vec2} v the vec2 to scale the matrix by + * @returns {mat2d} out + **/ +mat2d.scale = function(out, a, v) { + var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], + v0 = v[0], v1 = v[1]; + out[0] = a0 * v0; + out[1] = a1 * v0; + out[2] = a2 * v1; + out[3] = a3 * v1; + out[4] = a4; + out[5] = a5; + return out; +}; + +/** + * Translates the mat2d by the dimensions in the given vec2 + * + * @param {mat2d} out the receiving matrix + * @param {mat2d} a the matrix to translate + * @param {vec2} v the vec2 to translate the matrix by + * @returns {mat2d} out + **/ +mat2d.translate = function(out, a, v) { + var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], + v0 = v[0], v1 = v[1]; + out[0] = a0; + out[1] = a1; + out[2] = a2; + out[3] = a3; + out[4] = a0 * v0 + a2 * v1 + a4; + out[5] = a1 * v0 + a3 * v1 + a5; + return out; +}; + +/** + * Returns a string representation of a mat2d + * + * @param {mat2d} a matrix to represent as a string + * @returns {String} string representation of the matrix + */ +mat2d.str = function (a) { + return 'mat2d(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + + a[3] + ', ' + a[4] + ', ' + a[5] + ')'; +}; + +/** + * Returns Frobenius norm of a mat2d + * + * @param {mat2d} a the matrix to calculate Frobenius norm of + * @returns {Number} Frobenius norm + */ +mat2d.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)) +}; + +if(typeof(exports) !== 'undefined') { + exports.mat2d = mat2d; +} +; +/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + +/** + * @class 3x3 Matrix + * @name mat3 + */ + +var mat3 = {}; + +/** + * Creates a new identity mat3 + * + * @returns {mat3} a new 3x3 matrix + */ +mat3.create = function() { + var out = new GLMAT_ARRAY_TYPE(9); + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 1; + out[5] = 0; + out[6] = 0; + out[7] = 0; + out[8] = 1; + return out; +}; + +/** + * Copies the upper-left 3x3 values into the given mat3. + * + * @param {mat3} out the receiving 3x3 matrix + * @param {mat4} a the source 4x4 matrix + * @returns {mat3} out + */ +mat3.fromMat4 = function(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[4]; + out[4] = a[5]; + out[5] = a[6]; + out[6] = a[8]; + out[7] = a[9]; + out[8] = a[10]; + return out; +}; + +/** + * Creates a new mat3 initialized with values from an existing matrix + * + * @param {mat3} a matrix to clone + * @returns {mat3} a new 3x3 matrix + */ +mat3.clone = function(a) { + var out = new GLMAT_ARRAY_TYPE(9); + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[4] = a[4]; + out[5] = a[5]; + out[6] = a[6]; + out[7] = a[7]; + out[8] = a[8]; + return out; +}; + +/** + * Copy the values from one mat3 to another + * + * @param {mat3} out the receiving matrix + * @param {mat3} a the source matrix + * @returns {mat3} out + */ +mat3.copy = function(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[4] = a[4]; + out[5] = a[5]; + out[6] = a[6]; + out[7] = a[7]; + out[8] = a[8]; + return out; +}; + +/** + * Set a mat3 to the identity matrix + * + * @param {mat3} out the receiving matrix + * @returns {mat3} out + */ +mat3.identity = function(out) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 1; + out[5] = 0; + out[6] = 0; + out[7] = 0; + out[8] = 1; + return out; +}; + +/** + * Transpose the values of a mat3 + * + * @param {mat3} out the receiving matrix + * @param {mat3} a the source matrix + * @returns {mat3} out + */ +mat3.transpose = function(out, a) { + // If we are transposing ourselves we can skip a few steps but have to cache some values + if (out === a) { + var a01 = a[1], a02 = a[2], a12 = a[5]; + out[1] = a[3]; + out[2] = a[6]; + out[3] = a01; + out[5] = a[7]; + out[6] = a02; + out[7] = a12; + } else { + out[0] = a[0]; + out[1] = a[3]; + out[2] = a[6]; + out[3] = a[1]; + out[4] = a[4]; + out[5] = a[7]; + out[6] = a[2]; + out[7] = a[5]; + out[8] = a[8]; + } + + return out; +}; + +/** + * Inverts a mat3 + * + * @param {mat3} out the receiving matrix + * @param {mat3} a the source matrix + * @returns {mat3} out + */ +mat3.invert = function(out, a) { + var a00 = a[0], a01 = a[1], a02 = a[2], + a10 = a[3], a11 = a[4], a12 = a[5], + a20 = a[6], a21 = a[7], a22 = a[8], + + b01 = a22 * a11 - a12 * a21, + b11 = -a22 * a10 + a12 * a20, + b21 = a21 * a10 - a11 * a20, + + // Calculate the determinant + det = a00 * b01 + a01 * b11 + a02 * b21; + + if (!det) { + return null; + } + det = 1.0 / det; + + out[0] = b01 * det; + out[1] = (-a22 * a01 + a02 * a21) * det; + out[2] = (a12 * a01 - a02 * a11) * det; + out[3] = b11 * det; + out[4] = (a22 * a00 - a02 * a20) * det; + out[5] = (-a12 * a00 + a02 * a10) * det; + out[6] = b21 * det; + out[7] = (-a21 * a00 + a01 * a20) * det; + out[8] = (a11 * a00 - a01 * a10) * det; + return out; +}; + +/** + * Calculates the adjugate of a mat3 + * + * @param {mat3} out the receiving matrix + * @param {mat3} a the source matrix + * @returns {mat3} out + */ +mat3.adjoint = function(out, a) { + var a00 = a[0], a01 = a[1], a02 = a[2], + a10 = a[3], a11 = a[4], a12 = a[5], + a20 = a[6], a21 = a[7], a22 = a[8]; + + out[0] = (a11 * a22 - a12 * a21); + out[1] = (a02 * a21 - a01 * a22); + out[2] = (a01 * a12 - a02 * a11); + out[3] = (a12 * a20 - a10 * a22); + out[4] = (a00 * a22 - a02 * a20); + out[5] = (a02 * a10 - a00 * a12); + out[6] = (a10 * a21 - a11 * a20); + out[7] = (a01 * a20 - a00 * a21); + out[8] = (a00 * a11 - a01 * a10); + return out; +}; + +/** + * Calculates the determinant of a mat3 + * + * @param {mat3} a the source matrix + * @returns {Number} determinant of a + */ +mat3.determinant = function (a) { + var a00 = a[0], a01 = a[1], a02 = a[2], + a10 = a[3], a11 = a[4], a12 = a[5], + a20 = a[6], a21 = a[7], a22 = a[8]; + + return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20); +}; + +/** + * Multiplies two mat3's + * + * @param {mat3} out the receiving matrix + * @param {mat3} a the first operand + * @param {mat3} b the second operand + * @returns {mat3} out + */ +mat3.multiply = function (out, a, b) { + var a00 = a[0], a01 = a[1], a02 = a[2], + a10 = a[3], a11 = a[4], a12 = a[5], + a20 = a[6], a21 = a[7], a22 = a[8], + + b00 = b[0], b01 = b[1], b02 = b[2], + b10 = b[3], b11 = b[4], b12 = b[5], + b20 = b[6], b21 = b[7], b22 = b[8]; + + out[0] = b00 * a00 + b01 * a10 + b02 * a20; + out[1] = b00 * a01 + b01 * a11 + b02 * a21; + out[2] = b00 * a02 + b01 * a12 + b02 * a22; + + out[3] = b10 * a00 + b11 * a10 + b12 * a20; + out[4] = b10 * a01 + b11 * a11 + b12 * a21; + out[5] = b10 * a02 + b11 * a12 + b12 * a22; + + out[6] = b20 * a00 + b21 * a10 + b22 * a20; + out[7] = b20 * a01 + b21 * a11 + b22 * a21; + out[8] = b20 * a02 + b21 * a12 + b22 * a22; + return out; +}; + +/** + * Alias for {@link mat3.multiply} + * @function + */ +mat3.mul = mat3.multiply; + +/** + * Translate a mat3 by the given vector + * + * @param {mat3} out the receiving matrix + * @param {mat3} a the matrix to translate + * @param {vec2} v vector to translate by + * @returns {mat3} out + */ +mat3.translate = function(out, a, v) { + var a00 = a[0], a01 = a[1], a02 = a[2], + a10 = a[3], a11 = a[4], a12 = a[5], + a20 = a[6], a21 = a[7], a22 = a[8], + x = v[0], y = v[1]; + + out[0] = a00; + out[1] = a01; + out[2] = a02; + + out[3] = a10; + out[4] = a11; + out[5] = a12; + + out[6] = x * a00 + y * a10 + a20; + out[7] = x * a01 + y * a11 + a21; + out[8] = x * a02 + y * a12 + a22; + return out; +}; + +/** + * Rotates a mat3 by the given angle + * + * @param {mat3} out the receiving matrix + * @param {mat3} a the matrix to rotate + * @param {Number} rad the angle to rotate the matrix by + * @returns {mat3} out + */ +mat3.rotate = function (out, a, rad) { + var a00 = a[0], a01 = a[1], a02 = a[2], + a10 = a[3], a11 = a[4], a12 = a[5], + a20 = a[6], a21 = a[7], a22 = a[8], + + s = Math.sin(rad), + c = Math.cos(rad); + + out[0] = c * a00 + s * a10; + out[1] = c * a01 + s * a11; + out[2] = c * a02 + s * a12; + + out[3] = c * a10 - s * a00; + out[4] = c * a11 - s * a01; + out[5] = c * a12 - s * a02; + + out[6] = a20; + out[7] = a21; + out[8] = a22; + return out; +}; + +/** + * Scales the mat3 by the dimensions in the given vec2 + * + * @param {mat3} out the receiving matrix + * @param {mat3} a the matrix to rotate + * @param {vec2} v the vec2 to scale the matrix by + * @returns {mat3} out + **/ +mat3.scale = function(out, a, v) { + var x = v[0], y = v[1]; + + out[0] = x * a[0]; + out[1] = x * a[1]; + out[2] = x * a[2]; + + out[3] = y * a[3]; + out[4] = y * a[4]; + out[5] = y * a[5]; + + out[6] = a[6]; + out[7] = a[7]; + out[8] = a[8]; + return out; +}; + +/** + * Copies the values from a mat2d into a mat3 + * + * @param {mat3} out the receiving matrix + * @param {mat2d} a the matrix to copy + * @returns {mat3} out + **/ +mat3.fromMat2d = function(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = 0; + + out[3] = a[2]; + out[4] = a[3]; + out[5] = 0; + + out[6] = a[4]; + out[7] = a[5]; + out[8] = 1; + return out; +}; + +/** +* Calculates a 3x3 matrix from the given quaternion +* +* @param {mat3} out mat3 receiving operation result +* @param {quat} q Quaternion to create matrix from +* +* @returns {mat3} out +*/ +mat3.fromQuat = function (out, q) { + var x = q[0], y = q[1], z = q[2], w = q[3], + x2 = x + x, + y2 = y + y, + z2 = z + z, + + xx = x * x2, + yx = y * x2, + yy = y * y2, + zx = z * x2, + zy = z * y2, + zz = z * z2, + wx = w * x2, + wy = w * y2, + wz = w * z2; + + out[0] = 1 - yy - zz; + out[3] = yx - wz; + out[6] = zx + wy; + + out[1] = yx + wz; + out[4] = 1 - xx - zz; + out[7] = zy - wx; + + out[2] = zx - wy; + out[5] = zy + wx; + out[8] = 1 - xx - yy; + + return out; +}; + +/** +* Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix +* +* @param {mat3} out mat3 receiving operation result +* @param {mat4} a Mat4 to derive the normal matrix from +* +* @returns {mat3} out +*/ +mat3.normalFromMat4 = function (out, a) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], + a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], + a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], + a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15], + + b00 = a00 * a11 - a01 * a10, + b01 = a00 * a12 - a02 * a10, + b02 = a00 * a13 - a03 * a10, + b03 = a01 * a12 - a02 * a11, + b04 = a01 * a13 - a03 * a11, + b05 = a02 * a13 - a03 * a12, + b06 = a20 * a31 - a21 * a30, + b07 = a20 * a32 - a22 * a30, + b08 = a20 * a33 - a23 * a30, + b09 = a21 * a32 - a22 * a31, + b10 = a21 * a33 - a23 * a31, + b11 = a22 * a33 - a23 * a32, + + // Calculate the determinant + det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + + if (!det) { + return null; + } + det = 1.0 / det; + + out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; + out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det; + out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det; + + out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det; + out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det; + out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det; + + out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det; + out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det; + out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det; + + return out; +}; + +/** + * Returns a string representation of a mat3 + * + * @param {mat3} mat matrix to represent as a string + * @returns {String} string representation of the matrix + */ +mat3.str = function (a) { + return 'mat3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + + a[3] + ', ' + a[4] + ', ' + a[5] + ', ' + + a[6] + ', ' + a[7] + ', ' + a[8] + ')'; +}; + +/** + * Returns Frobenius norm of a mat3 + * + * @param {mat3} a the matrix to calculate Frobenius norm of + * @returns {Number} Frobenius norm + */ +mat3.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))) +}; + + +if(typeof(exports) !== 'undefined') { + exports.mat3 = mat3; +} +; +/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + +/** + * @class 4x4 Matrix + * @name mat4 + */ + +var mat4 = {}; + +/** + * Creates a new identity mat4 + * + * @returns {mat4} a new 4x4 matrix + */ +mat4.create = function() { + var out = new GLMAT_ARRAY_TYPE(16); + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = 1; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 1; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +}; + +/** + * Creates a new mat4 initialized with values from an existing matrix + * + * @param {mat4} a matrix to clone + * @returns {mat4} a new 4x4 matrix + */ +mat4.clone = function(a) { + var out = new GLMAT_ARRAY_TYPE(16); + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[4] = a[4]; + out[5] = a[5]; + out[6] = a[6]; + out[7] = a[7]; + out[8] = a[8]; + out[9] = a[9]; + out[10] = a[10]; + out[11] = a[11]; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + return out; +}; + +/** + * Copy the values from one mat4 to another + * + * @param {mat4} out the receiving matrix + * @param {mat4} a the source matrix + * @returns {mat4} out + */ +mat4.copy = function(out, a) { + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[4] = a[4]; + out[5] = a[5]; + out[6] = a[6]; + out[7] = a[7]; + out[8] = a[8]; + out[9] = a[9]; + out[10] = a[10]; + out[11] = a[11]; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + return out; +}; + +/** + * Set a mat4 to the identity matrix + * + * @param {mat4} out the receiving matrix + * @returns {mat4} out + */ +mat4.identity = function(out) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = 1; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 1; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +}; + +/** + * Transpose the values of a mat4 + * + * @param {mat4} out the receiving matrix + * @param {mat4} a the source matrix + * @returns {mat4} out + */ +mat4.transpose = function(out, a) { + // If we are transposing ourselves we can skip a few steps but have to cache some values + if (out === a) { + var a01 = a[1], a02 = a[2], a03 = a[3], + a12 = a[6], a13 = a[7], + a23 = a[11]; + + out[1] = a[4]; + out[2] = a[8]; + out[3] = a[12]; + out[4] = a01; + out[6] = a[9]; + out[7] = a[13]; + out[8] = a02; + out[9] = a12; + out[11] = a[14]; + out[12] = a03; + out[13] = a13; + out[14] = a23; + } else { + out[0] = a[0]; + out[1] = a[4]; + out[2] = a[8]; + out[3] = a[12]; + out[4] = a[1]; + out[5] = a[5]; + out[6] = a[9]; + out[7] = a[13]; + out[8] = a[2]; + out[9] = a[6]; + out[10] = a[10]; + out[11] = a[14]; + out[12] = a[3]; + out[13] = a[7]; + out[14] = a[11]; + out[15] = a[15]; + } + + return out; +}; + +/** + * Inverts a mat4 + * + * @param {mat4} out the receiving matrix + * @param {mat4} a the source matrix + * @returns {mat4} out + */ +mat4.invert = function(out, a) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], + a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], + a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], + a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15], + + b00 = a00 * a11 - a01 * a10, + b01 = a00 * a12 - a02 * a10, + b02 = a00 * a13 - a03 * a10, + b03 = a01 * a12 - a02 * a11, + b04 = a01 * a13 - a03 * a11, + b05 = a02 * a13 - a03 * a12, + b06 = a20 * a31 - a21 * a30, + b07 = a20 * a32 - a22 * a30, + b08 = a20 * a33 - a23 * a30, + b09 = a21 * a32 - a22 * a31, + b10 = a21 * a33 - a23 * a31, + b11 = a22 * a33 - a23 * a32, + + // Calculate the determinant + det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + + if (!det) { + return null; + } + det = 1.0 / det; + + out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; + out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det; + out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det; + out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det; + out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det; + out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det; + out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det; + out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det; + out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det; + out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det; + out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det; + out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det; + out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det; + out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det; + out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det; + out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det; + + return out; +}; + +/** + * Calculates the adjugate of a mat4 + * + * @param {mat4} out the receiving matrix + * @param {mat4} a the source matrix + * @returns {mat4} out + */ +mat4.adjoint = function(out, a) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], + a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], + a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], + a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; + + out[0] = (a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22)); + out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22)); + out[2] = (a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12)); + out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12)); + out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22)); + out[5] = (a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22)); + out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12)); + out[7] = (a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12)); + out[8] = (a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21)); + out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21)); + out[10] = (a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11)); + out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11)); + out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21)); + out[13] = (a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21)); + out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11)); + out[15] = (a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11)); + return out; +}; + +/** + * Calculates the determinant of a mat4 + * + * @param {mat4} a the source matrix + * @returns {Number} determinant of a + */ +mat4.determinant = function (a) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], + a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], + a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], + a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15], + + b00 = a00 * a11 - a01 * a10, + b01 = a00 * a12 - a02 * a10, + b02 = a00 * a13 - a03 * a10, + b03 = a01 * a12 - a02 * a11, + b04 = a01 * a13 - a03 * a11, + b05 = a02 * a13 - a03 * a12, + b06 = a20 * a31 - a21 * a30, + b07 = a20 * a32 - a22 * a30, + b08 = a20 * a33 - a23 * a30, + b09 = a21 * a32 - a22 * a31, + b10 = a21 * a33 - a23 * a31, + b11 = a22 * a33 - a23 * a32; + + // Calculate the determinant + return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; +}; + +/** + * Multiplies two mat4's + * + * @param {mat4} out the receiving matrix + * @param {mat4} a the first operand + * @param {mat4} b the second operand + * @returns {mat4} out + */ +mat4.multiply = function (out, a, b) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], + a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], + a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], + a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; + + // Cache only the current line of the second matrix + var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; + out[0] = b0*a00 + b1*a10 + b2*a20 + b3*a30; + out[1] = b0*a01 + b1*a11 + b2*a21 + b3*a31; + out[2] = b0*a02 + b1*a12 + b2*a22 + b3*a32; + out[3] = b0*a03 + b1*a13 + b2*a23 + b3*a33; + + b0 = b[4]; b1 = b[5]; b2 = b[6]; b3 = b[7]; + out[4] = b0*a00 + b1*a10 + b2*a20 + b3*a30; + out[5] = b0*a01 + b1*a11 + b2*a21 + b3*a31; + out[6] = b0*a02 + b1*a12 + b2*a22 + b3*a32; + out[7] = b0*a03 + b1*a13 + b2*a23 + b3*a33; + + b0 = b[8]; b1 = b[9]; b2 = b[10]; b3 = b[11]; + out[8] = b0*a00 + b1*a10 + b2*a20 + b3*a30; + out[9] = b0*a01 + b1*a11 + b2*a21 + b3*a31; + out[10] = b0*a02 + b1*a12 + b2*a22 + b3*a32; + out[11] = b0*a03 + b1*a13 + b2*a23 + b3*a33; + + b0 = b[12]; b1 = b[13]; b2 = b[14]; b3 = b[15]; + out[12] = b0*a00 + b1*a10 + b2*a20 + b3*a30; + out[13] = b0*a01 + b1*a11 + b2*a21 + b3*a31; + out[14] = b0*a02 + b1*a12 + b2*a22 + b3*a32; + out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33; + return out; +}; + +/** + * Alias for {@link mat4.multiply} + * @function + */ +mat4.mul = mat4.multiply; + +/** + * Translate a mat4 by the given vector + * + * @param {mat4} out the receiving matrix + * @param {mat4} a the matrix to translate + * @param {vec3} v vector to translate by + * @returns {mat4} out + */ +mat4.translate = function (out, a, v) { + var x = v[0], y = v[1], z = v[2], + a00, a01, a02, a03, + a10, a11, a12, a13, + a20, a21, a22, a23; + + if (a === out) { + out[12] = a[0] * x + a[4] * y + a[8] * z + a[12]; + out[13] = a[1] * x + a[5] * y + a[9] * z + a[13]; + out[14] = a[2] * x + a[6] * y + a[10] * z + a[14]; + out[15] = a[3] * x + a[7] * y + a[11] * z + a[15]; + } else { + a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3]; + a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7]; + a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11]; + + out[0] = a00; out[1] = a01; out[2] = a02; out[3] = a03; + out[4] = a10; out[5] = a11; out[6] = a12; out[7] = a13; + out[8] = a20; out[9] = a21; out[10] = a22; out[11] = a23; + + out[12] = a00 * x + a10 * y + a20 * z + a[12]; + out[13] = a01 * x + a11 * y + a21 * z + a[13]; + out[14] = a02 * x + a12 * y + a22 * z + a[14]; + out[15] = a03 * x + a13 * y + a23 * z + a[15]; + } + + return out; +}; + +/** + * Scales the mat4 by the dimensions in the given vec3 + * + * @param {mat4} out the receiving matrix + * @param {mat4} a the matrix to scale + * @param {vec3} v the vec3 to scale the matrix by + * @returns {mat4} out + **/ +mat4.scale = function(out, a, v) { + var x = v[0], y = v[1], z = v[2]; + + out[0] = a[0] * x; + out[1] = a[1] * x; + out[2] = a[2] * x; + out[3] = a[3] * x; + out[4] = a[4] * y; + out[5] = a[5] * y; + out[6] = a[6] * y; + out[7] = a[7] * y; + out[8] = a[8] * z; + out[9] = a[9] * z; + out[10] = a[10] * z; + out[11] = a[11] * z; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + return out; +}; + +/** + * Rotates a mat4 by the given angle + * + * @param {mat4} out the receiving matrix + * @param {mat4} a the matrix to rotate + * @param {Number} rad the angle to rotate the matrix by + * @param {vec3} axis the axis to rotate around + * @returns {mat4} out + */ +mat4.rotate = function (out, a, rad, axis) { + var x = axis[0], y = axis[1], z = axis[2], + len = Math.sqrt(x * x + y * y + z * z), + s, c, t, + a00, a01, a02, a03, + a10, a11, a12, a13, + a20, a21, a22, a23, + b00, b01, b02, + b10, b11, b12, + b20, b21, b22; + + if (Math.abs(len) < GLMAT_EPSILON) { return null; } + + len = 1 / len; + x *= len; + y *= len; + z *= len; + + s = Math.sin(rad); + c = Math.cos(rad); + t = 1 - c; + + a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3]; + a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7]; + a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11]; + + // Construct the elements of the rotation matrix + b00 = x * x * t + c; b01 = y * x * t + z * s; b02 = z * x * t - y * s; + b10 = x * y * t - z * s; b11 = y * y * t + c; b12 = z * y * t + x * s; + b20 = x * z * t + y * s; b21 = y * z * t - x * s; b22 = z * z * t + c; + + // Perform rotation-specific matrix multiplication + out[0] = a00 * b00 + a10 * b01 + a20 * b02; + out[1] = a01 * b00 + a11 * b01 + a21 * b02; + out[2] = a02 * b00 + a12 * b01 + a22 * b02; + out[3] = a03 * b00 + a13 * b01 + a23 * b02; + out[4] = a00 * b10 + a10 * b11 + a20 * b12; + out[5] = a01 * b10 + a11 * b11 + a21 * b12; + out[6] = a02 * b10 + a12 * b11 + a22 * b12; + out[7] = a03 * b10 + a13 * b11 + a23 * b12; + out[8] = a00 * b20 + a10 * b21 + a20 * b22; + out[9] = a01 * b20 + a11 * b21 + a21 * b22; + out[10] = a02 * b20 + a12 * b21 + a22 * b22; + out[11] = a03 * b20 + a13 * b21 + a23 * b22; + + if (a !== out) { // If the source and destination differ, copy the unchanged last row + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + } + return out; +}; + +/** + * Rotates a matrix by the given angle around the X axis + * + * @param {mat4} out the receiving matrix + * @param {mat4} a the matrix to rotate + * @param {Number} rad the angle to rotate the matrix by + * @returns {mat4} out + */ +mat4.rotateX = function (out, a, rad) { + var s = Math.sin(rad), + c = Math.cos(rad), + a10 = a[4], + a11 = a[5], + a12 = a[6], + a13 = a[7], + a20 = a[8], + a21 = a[9], + a22 = a[10], + a23 = a[11]; + + if (a !== out) { // If the source and destination differ, copy the unchanged rows + out[0] = a[0]; + out[1] = a[1]; + out[2] = a[2]; + out[3] = a[3]; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + } + + // Perform axis-specific matrix multiplication + out[4] = a10 * c + a20 * s; + out[5] = a11 * c + a21 * s; + out[6] = a12 * c + a22 * s; + out[7] = a13 * c + a23 * s; + out[8] = a20 * c - a10 * s; + out[9] = a21 * c - a11 * s; + out[10] = a22 * c - a12 * s; + out[11] = a23 * c - a13 * s; + return out; +}; + +/** + * Rotates a matrix by the given angle around the Y axis + * + * @param {mat4} out the receiving matrix + * @param {mat4} a the matrix to rotate + * @param {Number} rad the angle to rotate the matrix by + * @returns {mat4} out + */ +mat4.rotateY = function (out, a, rad) { + var s = Math.sin(rad), + c = Math.cos(rad), + a00 = a[0], + a01 = a[1], + a02 = a[2], + a03 = a[3], + a20 = a[8], + a21 = a[9], + a22 = a[10], + a23 = a[11]; + + if (a !== out) { // If the source and destination differ, copy the unchanged rows + out[4] = a[4]; + out[5] = a[5]; + out[6] = a[6]; + out[7] = a[7]; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + } + + // Perform axis-specific matrix multiplication + out[0] = a00 * c - a20 * s; + out[1] = a01 * c - a21 * s; + out[2] = a02 * c - a22 * s; + out[3] = a03 * c - a23 * s; + out[8] = a00 * s + a20 * c; + out[9] = a01 * s + a21 * c; + out[10] = a02 * s + a22 * c; + out[11] = a03 * s + a23 * c; + return out; +}; + +/** + * Rotates a matrix by the given angle around the Z axis + * + * @param {mat4} out the receiving matrix + * @param {mat4} a the matrix to rotate + * @param {Number} rad the angle to rotate the matrix by + * @returns {mat4} out + */ +mat4.rotateZ = function (out, a, rad) { + var s = Math.sin(rad), + c = Math.cos(rad), + a00 = a[0], + a01 = a[1], + a02 = a[2], + a03 = a[3], + a10 = a[4], + a11 = a[5], + a12 = a[6], + a13 = a[7]; + + if (a !== out) { // If the source and destination differ, copy the unchanged last row + out[8] = a[8]; + out[9] = a[9]; + out[10] = a[10]; + out[11] = a[11]; + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + } + + // Perform axis-specific matrix multiplication + out[0] = a00 * c + a10 * s; + out[1] = a01 * c + a11 * s; + out[2] = a02 * c + a12 * s; + out[3] = a03 * c + a13 * s; + out[4] = a10 * c - a00 * s; + out[5] = a11 * c - a01 * s; + out[6] = a12 * c - a02 * s; + out[7] = a13 * c - a03 * s; + return out; +}; + +/** + * Creates a matrix from a quaternion rotation and vector translation + * This is equivalent to (but much faster than): + * + * mat4.identity(dest); + * mat4.translate(dest, vec); + * var quatMat = mat4.create(); + * quat4.toMat4(quat, quatMat); + * mat4.multiply(dest, quatMat); + * + * @param {mat4} out mat4 receiving operation result + * @param {quat4} q Rotation quaternion + * @param {vec3} v Translation vector + * @returns {mat4} out + */ +mat4.fromRotationTranslation = function (out, q, v) { + // Quaternion math + var x = q[0], y = q[1], z = q[2], w = q[3], + x2 = x + x, + y2 = y + y, + z2 = z + z, + + xx = x * x2, + xy = x * y2, + xz = x * z2, + yy = y * y2, + yz = y * z2, + zz = z * z2, + wx = w * x2, + wy = w * y2, + wz = w * z2; + + out[0] = 1 - (yy + zz); + out[1] = xy + wz; + out[2] = xz - wy; + out[3] = 0; + out[4] = xy - wz; + out[5] = 1 - (xx + zz); + out[6] = yz + wx; + out[7] = 0; + out[8] = xz + wy; + out[9] = yz - wx; + out[10] = 1 - (xx + yy); + out[11] = 0; + out[12] = v[0]; + out[13] = v[1]; + out[14] = v[2]; + out[15] = 1; + + return out; +}; + +mat4.fromQuat = function (out, q) { + var x = q[0], y = q[1], z = q[2], w = q[3], + x2 = x + x, + y2 = y + y, + z2 = z + z, + + xx = x * x2, + yx = y * x2, + yy = y * y2, + zx = z * x2, + zy = z * y2, + zz = z * z2, + wx = w * x2, + wy = w * y2, + wz = w * z2; + + out[0] = 1 - yy - zz; + out[1] = yx + wz; + out[2] = zx - wy; + out[3] = 0; + + out[4] = yx - wz; + out[5] = 1 - xx - zz; + out[6] = zy + wx; + out[7] = 0; + + out[8] = zx + wy; + out[9] = zy - wx; + out[10] = 1 - xx - yy; + out[11] = 0; + + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + + return out; +}; + +/** + * Generates a frustum matrix with the given bounds + * + * @param {mat4} out mat4 frustum matrix will be written into + * @param {Number} left Left bound of the frustum + * @param {Number} right Right bound of the frustum + * @param {Number} bottom Bottom bound of the frustum + * @param {Number} top Top bound of the frustum + * @param {Number} near Near bound of the frustum + * @param {Number} far Far bound of the frustum + * @returns {mat4} out + */ +mat4.frustum = function (out, left, right, bottom, top, near, far) { + var rl = 1 / (right - left), + tb = 1 / (top - bottom), + nf = 1 / (near - far); + out[0] = (near * 2) * rl; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = (near * 2) * tb; + out[6] = 0; + out[7] = 0; + out[8] = (right + left) * rl; + out[9] = (top + bottom) * tb; + out[10] = (far + near) * nf; + out[11] = -1; + out[12] = 0; + out[13] = 0; + out[14] = (far * near * 2) * nf; + out[15] = 0; + return out; +}; + +/** + * Generates a perspective projection matrix with the given bounds + * + * @param {mat4} out mat4 frustum matrix will be written into + * @param {number} fovy Vertical field of view in radians + * @param {number} aspect Aspect ratio. typically viewport width/height + * @param {number} near Near bound of the frustum + * @param {number} far Far bound of the frustum + * @returns {mat4} out + */ +mat4.perspective = function (out, fovy, aspect, near, far) { + var f = 1.0 / Math.tan(fovy / 2), + nf = 1 / (near - far); + out[0] = f / aspect; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = f; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = (far + near) * nf; + out[11] = -1; + out[12] = 0; + out[13] = 0; + out[14] = (2 * far * near) * nf; + out[15] = 0; + return out; +}; + +/** + * Generates a orthogonal projection matrix with the given bounds + * + * @param {mat4} out mat4 frustum matrix will be written into + * @param {number} left Left bound of the frustum + * @param {number} right Right bound of the frustum + * @param {number} bottom Bottom bound of the frustum + * @param {number} top Top bound of the frustum + * @param {number} near Near bound of the frustum + * @param {number} far Far bound of the frustum + * @returns {mat4} out + */ +mat4.ortho = function (out, left, right, bottom, top, near, far) { + var lr = 1 / (left - right), + bt = 1 / (bottom - top), + nf = 1 / (near - far); + out[0] = -2 * lr; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = -2 * bt; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 2 * nf; + out[11] = 0; + out[12] = (left + right) * lr; + out[13] = (top + bottom) * bt; + out[14] = (far + near) * nf; + out[15] = 1; + return out; +}; + +/** + * Generates a look-at matrix with the given eye position, focal point, and up axis + * + * @param {mat4} out mat4 frustum matrix will be written into + * @param {vec3} eye Position of the viewer + * @param {vec3} center Point the viewer is looking at + * @param {vec3} up vec3 pointing up + * @returns {mat4} out + */ +mat4.lookAt = function (out, eye, center, up) { + var x0, x1, x2, y0, y1, y2, z0, z1, z2, len, + eyex = eye[0], + eyey = eye[1], + eyez = eye[2], + upx = up[0], + upy = up[1], + upz = up[2], + centerx = center[0], + centery = center[1], + centerz = center[2]; + + if (Math.abs(eyex - centerx) < GLMAT_EPSILON && + Math.abs(eyey - centery) < GLMAT_EPSILON && + Math.abs(eyez - centerz) < GLMAT_EPSILON) { + return mat4.identity(out); + } + + z0 = eyex - centerx; + z1 = eyey - centery; + z2 = eyez - centerz; + + len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2); + z0 *= len; + z1 *= len; + z2 *= len; + + x0 = upy * z2 - upz * z1; + x1 = upz * z0 - upx * z2; + x2 = upx * z1 - upy * z0; + len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2); + if (!len) { + x0 = 0; + x1 = 0; + x2 = 0; + } else { + len = 1 / len; + x0 *= len; + x1 *= len; + x2 *= len; + } + + y0 = z1 * x2 - z2 * x1; + y1 = z2 * x0 - z0 * x2; + y2 = z0 * x1 - z1 * x0; + + len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2); + if (!len) { + y0 = 0; + y1 = 0; + y2 = 0; + } else { + len = 1 / len; + y0 *= len; + y1 *= len; + y2 *= len; + } + + out[0] = x0; + out[1] = y0; + out[2] = z0; + out[3] = 0; + out[4] = x1; + out[5] = y1; + out[6] = z1; + out[7] = 0; + out[8] = x2; + out[9] = y2; + out[10] = z2; + out[11] = 0; + out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez); + out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez); + out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez); + out[15] = 1; + + return out; +}; + +/** + * Returns a string representation of a mat4 + * + * @param {mat4} mat matrix to represent as a string + * @returns {String} string representation of the matrix + */ +mat4.str = function (a) { + return 'mat4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ', ' + + a[4] + ', ' + a[5] + ', ' + a[6] + ', ' + a[7] + ', ' + + a[8] + ', ' + a[9] + ', ' + a[10] + ', ' + a[11] + ', ' + + a[12] + ', ' + a[13] + ', ' + a[14] + ', ' + a[15] + ')'; +}; + +/** + * Returns Frobenius norm of a mat4 + * + * @param {mat4} a the matrix to calculate Frobenius norm of + * @returns {Number} Frobenius norm + */ +mat4.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) + Math.pow(a[9], 2) + Math.pow(a[10], 2) + Math.pow(a[11], 2) + Math.pow(a[12], 2) + Math.pow(a[13], 2) + Math.pow(a[14], 2) + Math.pow(a[15], 2) )) +}; + + +if(typeof(exports) !== 'undefined') { + exports.mat4 = mat4; +} +; +/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + +/** + * @class Quaternion + * @name quat + */ + +var quat = {}; + +/** + * Creates a new identity quat + * + * @returns {quat} a new quaternion + */ +quat.create = function() { + var out = new GLMAT_ARRAY_TYPE(4); + out[0] = 0; + out[1] = 0; + out[2] = 0; + out[3] = 1; + return out; +}; + +/** + * Sets a quaternion to represent the shortest rotation from one + * vector to another. + * + * Both vectors are assumed to be unit length. + * + * @param {quat} out the receiving quaternion. + * @param {vec3} a the initial vector + * @param {vec3} b the destination vector + * @returns {quat} out + */ +quat.rotationTo = (function() { + var tmpvec3 = vec3.create(); + var xUnitVec3 = vec3.fromValues(1,0,0); + var yUnitVec3 = vec3.fromValues(0,1,0); + + return function(out, a, b) { + var dot = vec3.dot(a, b); + if (dot < -0.999999) { + vec3.cross(tmpvec3, xUnitVec3, a); + if (vec3.length(tmpvec3) < 0.000001) + vec3.cross(tmpvec3, yUnitVec3, a); + vec3.normalize(tmpvec3, tmpvec3); + quat.setAxisAngle(out, tmpvec3, Math.PI); + return out; + } else if (dot > 0.999999) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + out[3] = 1; + return out; + } else { + vec3.cross(tmpvec3, a, b); + out[0] = tmpvec3[0]; + out[1] = tmpvec3[1]; + out[2] = tmpvec3[2]; + out[3] = 1 + dot; + return quat.normalize(out, out); + } + }; +})(); + +/** + * Sets the specified quaternion with values corresponding to the given + * axes. Each axis is a vec3 and is expected to be unit length and + * perpendicular to all other specified axes. + * + * @param {vec3} view the vector representing the viewing direction + * @param {vec3} right the vector representing the local "right" direction + * @param {vec3} up the vector representing the local "up" direction + * @returns {quat} out + */ +quat.setAxes = (function() { + var matr = mat3.create(); + + return function(out, view, right, up) { + matr[0] = right[0]; + matr[3] = right[1]; + matr[6] = right[2]; + + matr[1] = up[0]; + matr[4] = up[1]; + matr[7] = up[2]; + + matr[2] = -view[0]; + matr[5] = -view[1]; + matr[8] = -view[2]; + + return quat.normalize(out, quat.fromMat3(out, matr)); + }; +})(); + +/** + * Creates a new quat initialized with values from an existing quaternion + * + * @param {quat} a quaternion to clone + * @returns {quat} a new quaternion + * @function + */ +quat.clone = vec4.clone; + +/** + * Creates a new quat initialized with the given values + * + * @param {Number} x X component + * @param {Number} y Y component + * @param {Number} z Z component + * @param {Number} w W component + * @returns {quat} a new quaternion + * @function + */ +quat.fromValues = vec4.fromValues; + +/** + * Copy the values from one quat to another + * + * @param {quat} out the receiving quaternion + * @param {quat} a the source quaternion + * @returns {quat} out + * @function + */ +quat.copy = vec4.copy; + +/** + * Set the components of a quat to the given values + * + * @param {quat} out the receiving quaternion + * @param {Number} x X component + * @param {Number} y Y component + * @param {Number} z Z component + * @param {Number} w W component + * @returns {quat} out + * @function + */ +quat.set = vec4.set; + +/** + * Set a quat to the identity quaternion + * + * @param {quat} out the receiving quaternion + * @returns {quat} out + */ +quat.identity = function(out) { + out[0] = 0; + out[1] = 0; + out[2] = 0; + out[3] = 1; + return out; +}; + +/** + * Sets a quat from the given angle and rotation axis, + * then returns it. + * + * @param {quat} out the receiving quaternion + * @param {vec3} axis the axis around which to rotate + * @param {Number} rad the angle in radians + * @returns {quat} out + **/ +quat.setAxisAngle = function(out, axis, rad) { + rad = rad * 0.5; + var s = Math.sin(rad); + out[0] = s * axis[0]; + out[1] = s * axis[1]; + out[2] = s * axis[2]; + out[3] = Math.cos(rad); + return out; +}; + +/** + * Adds two quat's + * + * @param {quat} out the receiving quaternion + * @param {quat} a the first operand + * @param {quat} b the second operand + * @returns {quat} out + * @function + */ +quat.add = vec4.add; + +/** + * Multiplies two quat's + * + * @param {quat} out the receiving quaternion + * @param {quat} a the first operand + * @param {quat} b the second operand + * @returns {quat} out + */ +quat.multiply = function(out, a, b) { + var ax = a[0], ay = a[1], az = a[2], aw = a[3], + bx = b[0], by = b[1], bz = b[2], bw = b[3]; + + out[0] = ax * bw + aw * bx + ay * bz - az * by; + out[1] = ay * bw + aw * by + az * bx - ax * bz; + out[2] = az * bw + aw * bz + ax * by - ay * bx; + out[3] = aw * bw - ax * bx - ay * by - az * bz; + return out; +}; + +/** + * Alias for {@link quat.multiply} + * @function + */ +quat.mul = quat.multiply; + +/** + * Scales a quat by a scalar number + * + * @param {quat} out the receiving vector + * @param {quat} a the vector to scale + * @param {Number} b amount to scale the vector by + * @returns {quat} out + * @function + */ +quat.scale = vec4.scale; + +/** + * Rotates a quaternion by the given angle about the X axis + * + * @param {quat} out quat receiving operation result + * @param {quat} a quat to rotate + * @param {number} rad angle (in radians) to rotate + * @returns {quat} out + */ +quat.rotateX = function (out, a, rad) { + rad *= 0.5; + + var ax = a[0], ay = a[1], az = a[2], aw = a[3], + bx = Math.sin(rad), bw = Math.cos(rad); + + out[0] = ax * bw + aw * bx; + out[1] = ay * bw + az * bx; + out[2] = az * bw - ay * bx; + out[3] = aw * bw - ax * bx; + return out; +}; + +/** + * Rotates a quaternion by the given angle about the Y axis + * + * @param {quat} out quat receiving operation result + * @param {quat} a quat to rotate + * @param {number} rad angle (in radians) to rotate + * @returns {quat} out + */ +quat.rotateY = function (out, a, rad) { + rad *= 0.5; + + var ax = a[0], ay = a[1], az = a[2], aw = a[3], + by = Math.sin(rad), bw = Math.cos(rad); + + out[0] = ax * bw - az * by; + out[1] = ay * bw + aw * by; + out[2] = az * bw + ax * by; + out[3] = aw * bw - ay * by; + return out; +}; + +/** + * Rotates a quaternion by the given angle about the Z axis + * + * @param {quat} out quat receiving operation result + * @param {quat} a quat to rotate + * @param {number} rad angle (in radians) to rotate + * @returns {quat} out + */ +quat.rotateZ = function (out, a, rad) { + rad *= 0.5; + + var ax = a[0], ay = a[1], az = a[2], aw = a[3], + bz = Math.sin(rad), bw = Math.cos(rad); + + out[0] = ax * bw + ay * bz; + out[1] = ay * bw - ax * bz; + out[2] = az * bw + aw * bz; + out[3] = aw * bw - az * bz; + return out; +}; + +/** + * Calculates the W component of a quat from the X, Y, and Z components. + * Assumes that quaternion is 1 unit in length. + * Any existing W component will be ignored. + * + * @param {quat} out the receiving quaternion + * @param {quat} a quat to calculate W component of + * @returns {quat} out + */ +quat.calculateW = function (out, a) { + var x = a[0], y = a[1], z = a[2]; + + out[0] = x; + out[1] = y; + out[2] = z; + out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z)); + return out; +}; + +/** + * Calculates the dot product of two quat's + * + * @param {quat} a the first operand + * @param {quat} b the second operand + * @returns {Number} dot product of a and b + * @function + */ +quat.dot = vec4.dot; + +/** + * Performs a linear interpolation between two quat's + * + * @param {quat} out the receiving quaternion + * @param {quat} a the first operand + * @param {quat} b the second operand + * @param {Number} t interpolation amount between the two inputs + * @returns {quat} out + * @function + */ +quat.lerp = vec4.lerp; + +/** + * Performs a spherical linear interpolation between two quat + * + * @param {quat} out the receiving quaternion + * @param {quat} a the first operand + * @param {quat} b the second operand + * @param {Number} t interpolation amount between the two inputs + * @returns {quat} out + */ +quat.slerp = function (out, a, b, t) { + // benchmarks: + // http://jsperf.com/quaternion-slerp-implementations + + var ax = a[0], ay = a[1], az = a[2], aw = a[3], + bx = b[0], by = b[1], bz = b[2], bw = b[3]; + + var omega, cosom, sinom, scale0, scale1; + + // calc cosine + cosom = ax * bx + ay * by + az * bz + aw * bw; + // adjust signs (if necessary) + if ( cosom < 0.0 ) { + cosom = -cosom; + bx = - bx; + by = - by; + bz = - bz; + bw = - bw; + } + // calculate coefficients + if ( (1.0 - cosom) > 0.000001 ) { + // standard case (slerp) + omega = Math.acos(cosom); + sinom = Math.sin(omega); + scale0 = Math.sin((1.0 - t) * omega) / sinom; + scale1 = Math.sin(t * omega) / sinom; + } else { + // "from" and "to" quaternions are very close + // ... so we can do a linear interpolation + scale0 = 1.0 - t; + scale1 = t; + } + // calculate final values + out[0] = scale0 * ax + scale1 * bx; + out[1] = scale0 * ay + scale1 * by; + out[2] = scale0 * az + scale1 * bz; + out[3] = scale0 * aw + scale1 * bw; + + return out; +}; + +/** + * Calculates the inverse of a quat + * + * @param {quat} out the receiving quaternion + * @param {quat} a quat to calculate inverse of + * @returns {quat} out + */ +quat.invert = function(out, a) { + var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], + dot = a0*a0 + a1*a1 + a2*a2 + a3*a3, + invDot = dot ? 1.0/dot : 0; + + // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0 + + out[0] = -a0*invDot; + out[1] = -a1*invDot; + out[2] = -a2*invDot; + out[3] = a3*invDot; + return out; +}; + +/** + * Calculates the conjugate of a quat + * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result. + * + * @param {quat} out the receiving quaternion + * @param {quat} a quat to calculate conjugate of + * @returns {quat} out + */ +quat.conjugate = function (out, a) { + out[0] = -a[0]; + out[1] = -a[1]; + out[2] = -a[2]; + out[3] = a[3]; + return out; +}; + +/** + * Calculates the length of a quat + * + * @param {quat} a vector to calculate length of + * @returns {Number} length of a + * @function + */ +quat.length = vec4.length; + +/** + * Alias for {@link quat.length} + * @function + */ +quat.len = quat.length; + +/** + * Calculates the squared length of a quat + * + * @param {quat} a vector to calculate squared length of + * @returns {Number} squared length of a + * @function + */ +quat.squaredLength = vec4.squaredLength; + +/** + * Alias for {@link quat.squaredLength} + * @function + */ +quat.sqrLen = quat.squaredLength; + +/** + * Normalize a quat + * + * @param {quat} out the receiving quaternion + * @param {quat} a quaternion to normalize + * @returns {quat} out + * @function + */ +quat.normalize = vec4.normalize; + +/** + * Creates a quaternion from the given 3x3 rotation matrix. + * + * NOTE: The resultant quaternion is not normalized, so you should be sure + * to renormalize the quaternion yourself where necessary. + * + * @param {quat} out the receiving quaternion + * @param {mat3} m rotation matrix + * @returns {quat} out + * @function + */ +quat.fromMat3 = function(out, m) { + // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes + // article "Quaternion Calculus and Fast Animation". + var fTrace = m[0] + m[4] + m[8]; + var fRoot; + + if ( fTrace > 0.0 ) { + // |w| > 1/2, may as well choose w > 1/2 + fRoot = Math.sqrt(fTrace + 1.0); // 2w + out[3] = 0.5 * fRoot; + fRoot = 0.5/fRoot; // 1/(4w) + out[0] = (m[5]-m[7])*fRoot; + out[1] = (m[6]-m[2])*fRoot; + out[2] = (m[1]-m[3])*fRoot; + } else { + // |w| <= 1/2 + var i = 0; + if ( m[4] > m[0] ) + i = 1; + if ( m[8] > m[i*3+i] ) + i = 2; + var j = (i+1)%3; + var k = (i+2)%3; + + fRoot = Math.sqrt(m[i*3+i]-m[j*3+j]-m[k*3+k] + 1.0); + out[i] = 0.5 * fRoot; + fRoot = 0.5 / fRoot; + out[3] = (m[j*3+k] - m[k*3+j]) * fRoot; + out[j] = (m[j*3+i] + m[i*3+j]) * fRoot; + out[k] = (m[k*3+i] + m[i*3+k]) * fRoot; + } + + return out; +}; + +/** + * Returns a string representation of a quatenion + * + * @param {quat} vec vector to represent as a string + * @returns {String} string representation of the vector + */ +quat.str = function (a) { + return 'quat(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')'; +}; + +if(typeof(exports) !== 'undefined') { + exports.quat = quat; +} +; + + + + + + + + + + + + + + })(shim.exports); +})(this); + +/****************************************************************************** + * Creature Runtimes License + * + * Copyright (c) 2015, Kestrel Moon Studios + * All rights reserved. + * + * Preamble: This Agreement governs the relationship between Licensee and Kestrel Moon Studios(Hereinafter: Licensor). + * This Agreement sets the terms, rights, restrictions and obligations on using [Creature Runtimes] (hereinafter: The Software) created and owned by Licensor, + * as detailed herein: + * License Grant: Licensor hereby grants Licensee a Sublicensable, Non-assignable & non-transferable, Commercial, Royalty free, + * Including the rights to create but not distribute derivative works, Non-exclusive license, all with accordance with the terms set forth and + * other legal restrictions set forth in 3rd party software used while running Software. + * Limited: Licensee may use Software for the purpose of: + * Running Software on Licensee’s Website[s] and Server[s]; + * Allowing 3rd Parties to run Software on Licensee’s Website[s] and Server[s]; + * Publishing Software’s output to Licensee and 3rd Parties; + * Distribute verbatim copies of Software’s output (including compiled binaries); + * Modify Software to suit Licensee’s needs and specifications. + * Binary Restricted: Licensee may sublicense Software as a part of a larger work containing more than Software, + * distributed solely in Object or Binary form under a personal, non-sublicensable, limited license. Such redistribution shall be limited to unlimited codebases. + * Non Assignable & Non-Transferable: Licensee may not assign or transfer his rights and duties under this license. + * Commercial, Royalty Free: Licensee may use Software for any purpose, including paid-services, without any royalties + * Including the Right to Create Derivative Works: Licensee may create derivative works based on Software, + * including amending Software’s source code, modifying it, integrating it into a larger work or removing portions of Software, + * as long as no distribution of the derivative works is made + * + * THE RUNTIMES IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE RUNTIMES OR THE USE OR OTHER DEALINGS IN THE + * RUNTIMES. + *****************************************************************************/ + + +// dualQuat + +var Q_X = 0; +var Q_Y = 1; +var Q_Z = 2; +var Q_W = 3; + +function dualQuat() +{ + this.real = quat.create(); + this.real[Q_W] = 0; + + this.imaginary = quat.create(); + this.imaginary[Q_W] = 0; + + this.tmpQ1 = quat.create(); +}; + +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(q0, t) +{ + this.real = q0; + this.imaginary = quat.create(); + this.imaginary[Q_W] = -0.5 * ( t[Q_X] * q0[Q_X] + t[Q_Y] * q0[Q_Y] + t[Q_Z] * q0[Q_Z]); + this.imaginary[Q_X] = 0.5 * ( t[Q_X] * q0[Q_W] + t[Q_Y] * q0[Q_Z] - t[Q_Z] * q0[Q_Y]); + this.imaginary[Q_Y] = 0.5 * (-t[Q_X] * q0[Q_Z] + t[Q_Y] * q0[Q_W] + t[Q_Z] * q0[Q_X]); + this.imaginary[Q_Z] = 0.5 * ( t[Q_X] * q0[Q_Y] - t[Q_Y] * q0[Q_X] + t[Q_Z] * q0[Q_W]); + +}; + +dualQuat.prototype.add = function(quat_in, real_factor, imaginary_factor) +{ + //real = real.add((quat_in.real.cpy().mul(real_factor))); + //var tmpQ = quat.clone(quat_in.real); + quat.copy(this.tmpQ1, quat_in.real); + + quat.scale(this.tmpQ1, this.tmpQ1, real_factor); + quat.add(this.real, this.tmpQ1, this.real); + + //imaginary = imaginary.add(quat_in.imaginary.cpy().mul(imaginary_factor)); + //tmpQ = quat.clone(quat_in.imaginary); + quat.copy(this.tmpQ1, quat_in.imaginary); + quat.scale(this.tmpQ1, this.tmpQ1, imaginary_factor); + quat.add(this.imaginary, this.tmpQ1, this.imaginary); +}; + +dualQuat.prototype.normalize = function() +{ + var norm = quat.length(this.real); + + this.real = quat.scale(this.real, this.real, 1.0 / norm); + this.imaginary = quat.scale(this.imaginary, this.imaginary, 1.0 / norm); +}; + +var v0 = vec3.create(); +var ve = vec3.create(); +var trans = vec3.create(); +var tmpVec1 = vec3.create(); +var tmpVec2 = vec3.create(); +var tmpVec0 = vec3.create(); +var aVec = vec3.create(); +var rot = vec3.create(); + +dualQuat.prototype.transform = function(p) +{ + 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]; + + //trans = (ve*real.w - v0*imaginary.w + Vector3.Cross(v0, ve)) * 2.0f; + +// var tmpVec1 = v0.cpy().scl((float)imaginary.w); + tmpVec1 = vec3.scale(tmpVec1, v0, this.imaginary[Q_W]); + +// var tmpVec2 = v0.cpy().crs(ve); + tmpVec2 = vec3.cross(tmpVec2, v0, ve); + + //var tmpVec0 = ve.cpy().scl(real.w); + //trans = tmpVec0.sub(tmpVec1).add(tmpVec2); + //trans.scl(2.0f); + + 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.0); + + //var rot = real.transform(p.cpy()); + rot = vec3.transformQuat(rot, p, this.real); + + //return rot.add(trans); + rot = vec3.add(rot, rot, trans); + + return rot; +}; + +// Utils +var Utils = {}; + +Utils.setAxisMatrix = function(xAxis, yAxis, zAxis) +{ + var retMat = mat4.create(); + + var M00 = 0; + var M01 = 4; + var M02 = 8; + var M03 = 12; + var M10 = 1; + var M11 = 5; + var M12 = 9; + var M13 = 13; + var M20 = 2; + var M21 = 6; + var M22 = 10; + var M23 = 14; + var M30 = 3; + var M31 = 7; + var M32 = 11; + var M33 = 15; + + retMat[M00] = xAxis[Q_X]; + retMat[M01] = xAxis[Q_Y]; + retMat[M02] = xAxis[Q_Z]; + retMat[M10] = yAxis[Q_X]; + retMat[M11] = yAxis[Q_Y]; + retMat[M12] = yAxis[Q_Z]; + retMat[M20] = zAxis[Q_X]; + retMat[M21] = zAxis[Q_Y]; + retMat[M22] = zAxis[Q_Z]; + retMat[M03] = 0; + retMat[M13] = 0; + retMat[M23] = 0; + retMat[M30] = 0; + retMat[M31] = 0; + retMat[M32] = 0; + retMat[M33] = 1; + + retMat = mat4.transpose(retMat, retMat); + + return retMat; +}; + +Utils.matrixToQuat = function(mat_in) +{ + var retQuat = quat.create(); + var te = mat_in, + + m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], + m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], + m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ], + + trace = m11 + m22 + m33, + s; + + if ( trace > 0 ) { + + s = 0.5 / Math.sqrt( trace + 1.0 ); + + retQuat[Q_W] = 0.25 / s; + retQuat[Q_X] = ( m32 - m23 ) * s; + retQuat[Q_Y] = ( m13 - m31 ) * s; + retQuat[Q_Z] = ( m21 - m12 ) * s; + + } else if ( m11 > m22 && m11 > m33 ) { + + s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 ); + + retQuat[Q_W] = ( m32 - m23 ) / s; + retQuat[Q_X] = 0.25 * s; + retQuat[Q_Y] = ( m12 + m21 ) / s; + retQuat[Q_Z] = ( m13 + m31 ) / s; + + } else if ( m22 > m33 ) { + + s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 ); + + retQuat[Q_W] = ( m13 - m31 ) / s; + retQuat[Q_X] = ( m12 + m21 ) / s; + retQuat[Q_Y] = 0.25 * s; + retQuat[Q_Z] = ( m23 + m32 ) / s; + + } else { + + s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 ); + + retQuat[Q_W] = ( m21 - m12 ) / s; + retQuat[Q_X] = ( m13 + m31 ) / s; + retQuat[Q_Y] = ( m23 + m32 ) / s; + retQuat[Q_Z] = 0.25 * s; + + } + + return retQuat; +}; + +Utils.rotateVec_90 = function(vec_in) +{ + var ret_vec = vec3.fromValues(-vec_in[Q_Y], vec_in[Q_X], vec_in[Q_Z]); + + return ret_vec; +}; + +Utils.calcRotateMat = function(vec_in) +{ + var dir = vec3.clone(vec_in); + dir = vec3.normalize(dir, dir); + + var pep_dir = Utils.rotateVec_90(dir); + + var cur_tangent = vec3.fromValues(dir[Q_X], dir[Q_Y], 0); + var cur_normal = vec3.fromValues(pep_dir[Q_X], pep_dir[Q_Y], 0); + var cur_binormal = vec3.fromValues(0, 0, 1); + + var cur_rotate = mat4.create(); + cur_rotate = Utils.setAxisMatrix(cur_tangent, cur_normal, cur_binormal); + + return cur_rotate; +}; + +Utils.getMatTranslate = function(mat_in) +{ + var ret_pos = vec3.create(); + ret_pos[Q_X] = mat_in[12]; + ret_pos[Q_Y] = mat_in[13]; + ret_pos[Q_Z] = mat_in[14]; + + return ret_pos; +}; + +Utils.addMat = function(mat1, mat2) +{ + var retMat = mat4.create(); + for(var i = 0; i < 16; i++) + { + retMat[i] = mat1[i] + mat2[i]; + } + + return retMat; +}; + +Utils.mulMat = function(mat_in, factor) +{ + var retMat = mat4.create(); + for(var i = 0; i < 16; i++) + { + retMat[i] = mat_in[i] * factor; + } + + return retMat; +}; + +Utils.clamp = function(num, min, max) { + return num < min ? min : (num > max ? max : num); +}; + + var newVec1 = vec3.create(); + var newVec2 = vec3.create(); + +Utils.vecInterp = function(vec1, vec2, ratio) +{ + newVec1 = vec3.scale(newVec1, vec1, 1.0 - ratio); + newVec2 = vec3.scale(newVec2, vec2, ratio); + + var retVec = vec3.create(); + retVec = vec3.add(retVec, newVec1, newVec2); + + return retVec; +}; + +Utils.vec2Interp = function(vec_1, vec_2, ratio) +{ + var newVec1 = vec2.create(); + var newVec2 = vec2.create(); + + newVec1 = vec2.scale(newVec1, vec_1, 1.0 - ratio); + newVec2 = vec2.scale(newVec2, vec_2, ratio); + + var retVec = vec2.create(); + retVec = vec2.add(retVec, newVec1, newVec2); + + return retVec; +}; + +// MeshBone +function MeshBone(key_in, start_pt_in, end_pt_in, parent_transform) +{ + this.key = key_in; + 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(parent_transform, null); + this.setLocalRestStartPt(start_pt_in); + this.setLocalRestEndPt(end_pt_in); + this.setParentWorldInvMat(mat4.create()); + this.setParentWorldMat(mat4.create()); + + this.local_binormal_dir = vec3.fromValues(0.0,0.0,1.0); + this.tag_id = 0; + + this.children = []; +}; + +MeshBone.prototype.setRestParentMat = function(transform_in, inverse_in) +{ + this.rest_parent_mat = transform_in; + if(inverse_in == null) { + this.rest_parent_inv_mat = mat4.clone(this.rest_parent_mat); + //rest_parent_inv_mat.inv(); + mat4.invert(this.rest_parent_inv_mat, this.rest_parent_inv_mat); + } + else { + this.rest_parent_inv_mat = mat4.clone(inverse_in); + } +}; + +MeshBone.prototype.setParentWorldMat = function(transform_in) +{ + this.parent_world_mat = transform_in; +}; + +MeshBone.prototype.setParentWorldInvMat = function(transform_in) +{ + this.parent_world_inv_mat = transform_in; +}; + +MeshBone.prototype.getLocalRestStartPt = function() +{ + return this.local_rest_start_pt; +}; + +MeshBone.prototype.getLocalRestEndPt = function() +{ + return this.local_rest_end_pt; +}; + +MeshBone.prototype.setLocalRestStartPt = function(world_pt_in) +{ + //local_rest_start_pt = Vector3.Transform(world_pt_in, rest_parent_inv_mat); + //this.local_rest_start_pt = world_pt_in.cpy().traMul(rest_parent_inv_mat); + this.local_rest_start_pt = vec3.create(); + this.local_rest_start_pt = vec3.transformMat4(this.local_rest_start_pt, world_pt_in, this.rest_parent_inv_mat); + this.calcRestData(); +}; + +MeshBone.prototype.setLocalRestEndPt = function(world_pt_in) +{ + //local_rest_end_pt = Vector3.Transform(world_pt_in, rest_parent_inv_mat); + //this.local_rest_end_pt = world_pt_in.cpy().traMul(rest_parent_inv_mat); + this.local_rest_end_pt = vec3.create(); + this.local_rest_end_pt = vec3.transformMat4(this.local_rest_end_pt, world_pt_in, this.rest_parent_inv_mat); + this.calcRestData(); +}; + +MeshBone.prototype.calcRestData = function() +{ + if(this.local_rest_start_pt == null || this.local_rest_end_pt == null) + { + return; + } + + var calc = this.computeDirs(this.local_rest_start_pt, this.local_rest_end_pt); + + this.local_rest_dir = calc.first; + this.local_rest_normal_dir = calc.second; + + this.computeRestLength(); +}; + +MeshBone.prototype.setWorldStartPt = function(world_pt_in) +{ + this.world_start_pt = world_pt_in; +}; + +MeshBone.prototype.setWorldEndPt = function(world_pt_in) +{ + this.world_end_pt = world_pt_in; +}; + +MeshBone.prototype.fixDQs = function(ref_dq) +{ + // if( Quaternion.Dot(world_dq.real, ref_dq.real) < 0) { + //if( world_dq.real.dot(ref_dq.real) < 0) { + if(quat.dot(this.world_dq.real, ref_dq.real) < 0) { + //this.world_dq.real = world_dq.real.cpy().mul(-1); + this.world_dq.real = quat.scale(this.world_dq.real, this.world_dq.real, -1); + //this.world_dq.imaginary = world_dq.imaginary.cpy().mul(-1); + this.world_dq.imaginary = quat.scale(this.world_dq.imaginary, this.world_dq.imaginary, -1); + } + + for(var i = 0; i < this.children.length; i++) { + var cur_child = this.children[i]; + cur_child.fixDQs(this.world_dq); + } +}; + +MeshBone.prototype.initWorldPts = function() +{ + this.setWorldStartPt(this.getWorldRestStartPt()); + this.setWorldEndPt(this.getWorldRestEndPt()); + + for(var i = 0; i < this.children.length; i++) { + this.children[i].initWorldPts(); + } +}; + +MeshBone.prototype.getWorldRestStartPt = function() +{ + //Vector3 ret_vec = Vector3.Transform(local_rest_start_pt, rest_parent_mat); + var tmp_mat = this.rest_parent_mat; + var ret_vec = vec3.create(); + ret_vec = vec3.transformMat4(ret_vec, this.local_rest_start_pt, tmp_mat); + + return ret_vec; +}; + +MeshBone.prototype.getWorldRestEndPt = function() +{ + // Vector3 ret_vec = Vector3.Transform(local_rest_end_pt, rest_parent_mat); + var tmp_mat = this.rest_parent_mat; + var ret_vec = vec3.create(); + ret_vec = vec3.transformMat4(ret_vec, this.local_rest_end_pt, tmp_mat); + + return ret_vec; +}; + +MeshBone.prototype.getWorldRestAngle = function() +{ + return this.world_rest_angle; +}; + +MeshBone.prototype.getWorldRestPos = function() +{ + return this.world_rest_pos; +}; + +MeshBone.prototype.getWorldStartPt = function() +{ + return this.world_start_pt; +}; + +MeshBone.prototype.getWorldEndPt = function() +{ + return this.world_end_pt; +}; + +MeshBone.prototype.getRestParentMat = function() +{ + return this.rest_parent_mat; +}; + +MeshBone.prototype.getRestWorldMat = function() +{ + return this.rest_world_mat; +}; + +MeshBone.prototype.getWorldDeltaMat = function() +{ + return this.world_delta_mat; +}; + +MeshBone.prototype.getParentWorldMat = function() +{ + return this.parent_world_mat; +}; + +MeshBone.prototype.getParentWorldInvMat = function() +{ + return this.parent_world_inv_mat; +}; + +MeshBone.prototype.getWorldDq = function() +{ + return this.world_dq; +}; + +MeshBone.prototype.computeRestParentTransforms = function() +{ + var cur_tangent = vec3.fromValues(this.local_rest_dir[Q_X], this.local_rest_dir[Q_Y], 0); + var cur_binormal = vec3.fromValues(this.local_binormal_dir[Q_X], this.local_binormal_dir[Q_Y], this.local_binormal_dir[Q_Z]); + var cur_normal = vec3.fromValues(this.local_rest_normal_dir[Q_X], this.local_rest_normal_dir[Q_Y], 0); + + var cur_translate = mat4.create(); + //cur_translate.setTranslation(local_rest_end_pt.x, local_rest_end_pt.y, 0); + mat4.translate(cur_translate, cur_translate, this.local_rest_end_pt); + + var cur_rotate = mat4.create(); + /* + cur_rotate.Right = cur_tangent; + cur_rotate.Up = cur_normal; + cur_rotate.Backward = cur_binormal; + */ + //cur_rotate.set(cur_tangent, cur_normal, cur_binormal, new Vector3(0,0,0)); + cur_rotate = Utils.setAxisMatrix(cur_tangent, cur_normal, cur_binormal); + //cur_rotate.tra(); + + //Matrix4 cur_final = cur_translate.cpy().mul(cur_rotate); + var cur_final = mat4.create(); + cur_final = mat4.multiply(cur_final, cur_translate, cur_rotate); + + //rest_world_mat = rest_parent_mat.cpy().mul(cur_final); + this.rest_world_mat = mat4.create(); + this.rest_world_mat = mat4.multiply(this.rest_world_mat, this.rest_parent_mat, cur_final); + + this.rest_world_inv_mat = mat4.clone(this.rest_world_mat); + this.rest_world_inv_mat = mat4.invert(this.rest_world_inv_mat, this.rest_world_inv_mat); + //Matrix4.Invert(ref rest_world_mat, out rest_world_inv_mat); + +// var world_rest_dir = getWorldRestEndPt().cpy().sub( getWorldRestStartPt()); + var world_rest_dir = vec3.clone(this.getWorldRestEndPt()); + world_rest_dir = vec3.subtract(world_rest_dir, world_rest_dir, this.getWorldRestStartPt()); + + world_rest_dir = vec3.normalize(world_rest_dir, world_rest_dir); + this.world_rest_pos = this.getWorldRestStartPt(); + + + var bind_translate = mat4.create(); + //bind_translate.setTranslation(getWorldRestStartPt().x, getWorldRestStartPt().y, 0); + bind_translate = mat4.translate(bind_translate, bind_translate, this.getWorldRestStartPt()); + + var tVec = vec3.create(); + tVec = vec3.sub(tVec, this.getWorldRestEndPt(), this.getWorldRestStartPt()); + var bind_rotate = Utils.calcRotateMat(tVec); + //Matrix4 cur_bind_final = bind_translate.cpy().mul(bind_rotate); + var cur_bind_final = mat4.create(); + cur_bind_final = mat4.multiply(cur_bind_final, bind_translate, bind_rotate); + + this.bind_world_mat = mat4.clone(cur_bind_final); + this.bind_world_inv_mat = mat4.clone(this.bind_world_mat); + this.bind_world_inv_mat = mat4.invert(this.bind_world_inv_mat, this.bind_world_inv_mat); + //Matrix4.Invert(ref bind_world_mat, out bind_world_inv_mat); + + for(var i = 0; i < this.children.length; i++) { + var cur_bone = this.children[i]; + cur_bone.setRestParentMat(this.rest_world_mat, this.rest_world_inv_mat); + cur_bone.computeRestParentTransforms(); + } +}; + +MeshBone.prototype.computeParentTransforms = function() +{ + var translate_parent = mat4.create(); + translate_parent = mat4.translate(translate_parent, translate_parent, this.getWorldEndPt()); + + var tVec = vec3.create(); + tVec = vec3.subtract(tVec, this.getWorldEndpt(), this.getWorldStartPt()); + var rotate_parent = Utils.calcRotateMat(tVec); + + var final_transform = mat4.create(); + final_transform = mat4.multiply(final_transform, translate_parent, rotate_parent); + + var final_inv_transform = mat4.clone(final_transform); + //final_inv_transform.inv(); + final_inv_transform = mat4.invert(final_inv_transform, final_inv_transform); + + for(var i = 0; i < children.length; i++) { + var cur_bone = children[i]; + cur_bone.setParentWorldMat(final_transform); + cur_bone.setParentWorldInvMat(final_inv_transform); + cur_bone.computeParentTransforms(); + } +}; + +MeshBone.prototype.computeWorldDeltaTransforms = function() +{ + var calc = this.computeDirs(this.world_start_pt, this.world_end_pt); + var cur_tangent = vec3.fromValues(calc["first"][Q_X], calc["first"][Q_Y], 0); + var cur_normal = vec3.fromValues(calc["second"][Q_X], calc["second"][Q_Y], 0); + var cur_binormal = vec3.fromValues(this.local_binormal_dir[Q_X], this.local_binormal_dir[Q_Y], this.local_binormal_dir[Q_Z]); + + var cur_rotate = mat4.create(); + /* + cur_rotate.Right = cur_tangent; + cur_rotate.Up = cur_normal; + cur_rotate.Backward = cur_binormal; + */ + //cur_rotate.set(cur_tangent, cur_normal, cur_binormal, new Vector3(0,0,0)); + cur_rotate = Utils.setAxisMatrix(cur_tangent, cur_normal, cur_binormal); + + //cur_rotate.tra(); + + var cur_translate = mat4.create(); + //cur_translate.setTranslation(world_start_pt.x, world_start_pt.y, 0); + cur_translate = mat4.translate(cur_translate, cur_translate, this.world_start_pt); + + /* + world_delta_mat = (cur_translate * cur_rotate) + * bind_world_inv_mat; + */ + + this.world_delta_mat = mat4.create(); +// world_delta_mat = (cur_translate.cpy().mul(cur_rotate)).mul(bind_world_inv_mat); + this.world_delta_mat = mat4.multiply(this.world_delta_mat, cur_translate, cur_rotate); + this.world_delta_mat = mat4.multiply(this.world_delta_mat, this.world_delta_mat, this.bind_world_inv_mat); + + + // Quaternion cur_quat = XnaGeometry.Quaternion.CreateFromRotationMatrix(world_delta_mat); + //var tmpMat = mat3.create(); + //tmpMat = mat3.fromMat4(tmpMat, this.world_delta_mat); + var cur_quat = Utils.matrixToQuat(this.world_delta_mat); + + + var tmp_pos = Utils.getMatTranslate(this.world_delta_mat); + this.world_dq = new dualQuat(); + this.world_dq.createFromData(cur_quat, tmp_pos); + + for(var i = 0; i < this.children.length; i++) { + var cur_bone = this.children[i]; + cur_bone.computeWorldDeltaTransforms(); + } +}; + +MeshBone.prototype.addChild = function(bone_in) +{ + bone_in.setRestParentMat(this.rest_world_mat, this.rest_world_inv_mat); + this.children.push(bone_in); +}; + +MeshBone.prototype.getChildren = function() +{ + return this.children; +}; + +MeshBone.prototype.hasBone = function(bone_in) +{ + for(var i = 0; i < this.children.length; i++) { + var cur_bone = this.children[i]; + if(cur_bone == bone_in) { + return true; + } + } + + return false; +}; + +MeshBone.prototype.getChildByKey = function(search_key) +{ + if(this.key === search_key) { + return this; + } + + var ret_data = null; + for(var i = 0; i < this.children.length; i++) { + var cur_bone = this.children[i]; + + var result = cur_bone.getChildByKey(search_key); + if(result != null) { + ret_data = result; + break; + } + } + + return ret_data; +}; + +MeshBone.prototype.getKey = function() +{ + return this.key; +}; + +MeshBone.prototype.getAllBoneKeys = function() +{ + var ret_data = []; + ret_data.push(this.getKey()); + + for(var i = 0; i < this.children.length; i++) { + var append_data = this.children[i].getAllBoneKeys(); + ret_data = ret_data.concat(append_data); + } + + return ret_data; +}; + +MeshBone.prototype.getAllChildren = function() +{ + var ret_data = []; + ret_data.push(this); + for(var i = 0; i < this.children.length; i++) { + var append_data = this.children[i].getAllChildren(); + ret_data = ret_data.concat(append_data); + } + + return ret_data; +}; + +MeshBone.prototype.getBoneDepth = function(bone_in, depth) +{ + if(bone_in == this) { + return depth; + } + + for(var i = 0; i < this.children.length; i++) { + var cur_bone = this.children[i]; + var ret_val = cur_bone.getBoneDepth(bone_in, depth + 1); + if(ret_val != -1) { + return ret_val; + } + } + + return -1; +}; + +MeshBone.prototype.isLeaf = function() +{ + return this.children.length == 0; +}; + +MeshBone.prototype.deleteChildren = function() +{ + for(var i = 0; i < this.children.length; i++) { + var cur_bone = this.children[i]; + cur_bone.deleteChildren(); + } + + this.children = []; +}; + +MeshBone.prototype.setTagId = function(value_in) +{ + this.tag_id = value_in; +}; + +MeshBone.prototype.getTagId = function() +{ + return this.tag_id; +}; + +MeshBone.prototype.computeDirs = function(start_pt, end_pt) +{ + var tangent = vec3.create(); + tangent = vec3.subtract(tangent, end_pt, start_pt); + tangent = vec3.normalize(tangent, tangent); + + var normal = Utils.rotateVec_90(tangent); + + var retData = {}; + retData["first"] = tangent; + retData["second"] = normal; + + return retData; +}; + +MeshBone.prototype.computeRestLength = function() +{ + var tmp_dir = vec3.create(); + //Vector3 tmp_dir = local_rest_end_pt.cpy().sub(local_rest_start_pt); + tmp_dir = vec3.subtract(tmp_dir, this.local_rest_end_pt, this.local_rest_start_pt); + + this.rest_length = vec3.length(tmp_dir); +}; + +// MeshRenderRegion +function MeshRenderRegion(indices_in, rest_pts_in, uvs_in, start_pt_index_in, end_pt_index_in, + start_index_in, end_index_in) +{ + this.store_indices = indices_in; + this.store_rest_pts = rest_pts_in; + this.store_uvs = uvs_in; + + this.use_local_displacements = false; + this.use_post_displacements = false; + this.use_uv_warp = false; + 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 = start_pt_index_in; + this.end_pt_index = end_pt_index_in; + this.start_index = start_index_in; + this.end_index = end_index_in; + 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 = true; + this.tag_id = -1; + + this.initUvWarp(); +}; + +MeshRenderRegion.prototype.getIndicesIndex = function() +{ + // return store_indices + (start_index); + return this.start_index; +}; + +MeshRenderRegion.prototype.getRestPtsIndex = function() +{ + // return store_rest_pts + (3 * start_pt_index); + return 3 * this.start_pt_index; +}; + +MeshRenderRegion.prototype.getUVsIndex = function() +{ + // return store_uvs + (2 * start_pt_index); + return 2 * this.start_pt_index; +}; + +MeshRenderRegion.prototype.getNumPts = function() +{ + return this.end_pt_index - this.start_pt_index + 1; +}; + +MeshRenderRegion.prototype.getStartPtIndex = function() +{ + return this.start_pt_index; +}; + +MeshRenderRegion.prototype.getEndPtIndex = function() +{ + return this.end_pt_index; +}; + +MeshRenderRegion.prototype.getNumIndices = function() +{ + return this.end_index - this.start_index + 1; +}; + +MeshRenderRegion.prototype.getStartIndex = function() +{ + return this.start_index; +}; + +MeshRenderRegion.prototype.getEndIndex = function() +{ + return this.end_index; +}; + +var accum_dq = new dualQuat(); +var accum_mat = mat4.create(); +var final_pt = vec3.create(); +var tmp1 = vec3.create(); +var tmp2 = vec3.create(); + +MeshRenderRegion.prototype.poseFinalPts = function(output_pts, output_start_index, bones_map) +{ + var read_pt_index = this.getRestPtsIndex(); + var write_pt_index = output_start_index; + + // point posing + for(var i = 0; i < 16; i++) + { + accum_mat[i] = 0.0; + } + + var boneKeys = Object.keys(bones_map); + var boneKeyLength = boneKeys.length; + + for(var i = 0, l = this.getNumPts(); i < l; i++) { + var cur_rest_pt = + vec3.set(tmp1, this.store_rest_pts[0 + read_pt_index], + this.store_rest_pts[1 + read_pt_index], + this.store_rest_pts[2 + read_pt_index]); + // vec3.fromValues(this.store_rest_pts[0 + read_pt_index], + // this.store_rest_pts[1 + read_pt_index], + // this.store_rest_pts[2 + read_pt_index]); + + if(this.use_local_displacements == true) { + cur_rest_pt[Q_X] += this.local_displacements[i][Q_X]; + cur_rest_pt[Q_Y] += this.local_displacements[i][Q_Y]; + } + + for(var j = 0; j < 16; j++) + { + accum_mat[j] = 0.0; + } + // reuse + // var accum_dq = new dualQuat(); + accum_dq.reset(); + + var curBoneIndices = this.relevant_bones_indices[i]; + var relevantIndicesLength = curBoneIndices.length; + for (var j = 0; j < relevantIndicesLength; j++) + { + var idx_lookup = curBoneIndices[j]; + var cur_bone = this.fast_bones_map[idx_lookup]; + var cur_weight_val = this.fast_normal_weight_map[idx_lookup][i]; + var cur_im_weight_val = cur_weight_val; + + var world_dq = cur_bone.getWorldDq(); + accum_dq.add(world_dq, cur_weight_val, cur_im_weight_val); + } + + accum_dq.normalize(); + var tmp_pt = vec3.set(tmp2, cur_rest_pt[Q_X], cur_rest_pt[Q_Y], cur_rest_pt[Q_Z]); + // var tmp_pt = vec3.fromValues(cur_rest_pt[Q_X], cur_rest_pt[Q_Y], cur_rest_pt[Q_Z]); + final_pt = accum_dq.transform(tmp_pt); + + // debug start + + // debug end + + if(this.use_post_displacements == true) { + final_pt[Q_X] += this.post_displacements[i][Q_X]; + final_pt[Q_Y] += this.post_displacements[i][Q_Y]; + } + + output_pts[0 + write_pt_index] = final_pt[Q_X]; + output_pts[1 + write_pt_index] = final_pt[Q_Y]; + output_pts[2 + write_pt_index] = final_pt[Q_Z]; + + + + read_pt_index += 3; + write_pt_index += 3; + } + + // uv warping + if(this.use_uv_warp == true) { + this.runUvWarp(); + } +}; + +MeshRenderRegion.prototype.setMainBoneKey = function(key_in) +{ + this.main_bone_key = key_in; +}; + +MeshRenderRegion.prototype.determineMainBone = function(root_bone_in) +{ + this.main_bone = root_bone_in.getChildByKey(this.main_bone_key); +}; + +MeshRenderRegion.prototype.setUseDq = function(flag_in) +{ + this.use_dq = flag_in; +}; + +MeshRenderRegion.prototype.setName = function(name_in) +{ + this.name = name_in; +}; + +MeshRenderRegion.prototype.getName = function() +{ + return this.name; +}; + +MeshRenderRegion.prototype.setUseLocalDisplacements = function(flag_in) +{ + this.use_local_displacements = flag_in; + if((this.local_displacements.length != this.getNumPts()) + && this.use_local_displacements) + { + this.local_displacements = []; + for(var i = 0; i < this.getNumPts(); i++) { + this.local_displacements.push (vec2.create()); + } + } +}; + +MeshRenderRegion.prototype. getUseLocalDisplacements = function() +{ + return this.use_local_displacements; +}; + +MeshRenderRegion.prototype.setUsePostDisplacements = function(flag_in) +{ + this.use_post_displacements = flag_in; + if((this.post_displacements.length != this.getNumPts()) + && this.use_post_displacements) + { + this.post_displacements = []; + for(var i = 0; i < this.getNumPts(); i++) { + this.post_displacements.push(vec2.create()); + } + } +}; + +MeshRenderRegion.prototype.getUsePostDisplacements = function() +{ + return this.use_post_displacements; +}; + +MeshRenderRegion.prototype.getRestLocalPt = function(index_in) +{ + var read_pt_index = this.getRestPtsIndex() + (3 * index_in); + var return_pt = vec2.fromValues(this.store_rest_pts[0 + read_pt_index], + this.store_rest_pts[1 + read_pt_index]); + return return_pt; +}; + +MeshRenderRegion.prototype.getLocalIndex = function(index_in) +{ + var read_index = this.getIndicesIndex() + index_in; + return this.store_indices[read_index]; +}; + +MeshRenderRegion.prototype.clearLocalDisplacements = function() +{ + for(var i = 0; i < this.local_displacements.length; i++) { + this.local_displacements[i] = vec2.create(); + } +}; + +MeshRenderRegion.prototype.clearPostDisplacements = function() +{ + for(var i = 0; i < this.post_displacements.length; i++) { + this.post_displacements[i] = vec2.create(); + } +}; + +MeshRenderRegion.prototype.setUseUvWarp = function(flag_in) +{ + this.use_uv_warp = flag_in; + if(this.use_uv_warp == false) { + this.restoreRefUv(); + } +}; + +MeshRenderRegion.prototype. getUseUvWarp = function() +{ + return this.use_uv_warp; +}; + +MeshRenderRegion.prototype.setUvWarpLocalOffset = function(vec_in) +{ + this.uv_warp_local_offset = vec_in; +}; + +MeshRenderRegion.prototype.setUvWarpGlobalOffset = function(vec_in) +{ + this.uv_warp_global_offset = vec_in; +}; + +MeshRenderRegion.prototype.setUvWarpScale = function(vec_in) +{ + this.uv_warp_scale = vec_in; +}; + +MeshRenderRegion.prototype. getUvWarpLocalOffset = function() +{ + return this.uv_warp_local_offset; +}; + +MeshRenderRegion.prototype. getUvWarpGlobalOffset = function() +{ + return this.uv_warp_global_offset; +}; + +MeshRenderRegion.prototype. getUvWarpScale = function() +{ + return this.uv_warp_scale; +}; + +MeshRenderRegion.prototype.runUvWarp = function() +{ + var cur_uvs_index = this.getUVsIndex(); + for(var i = 0; i < this.uv_warp_ref_uvs.length; i++) { + var set_uv = vec2.clone(this.uv_warp_ref_uvs[i]); + + + set_uv = vec2.subtract(set_uv, set_uv, this.uv_warp_local_offset); + set_uv[Q_X] *= this.uv_warp_scale[Q_X]; + set_uv[Q_Y] *= this.uv_warp_scale[Q_Y]; + set_uv = vec2.add(set_uv, set_uv, this.uv_warp_global_offset); + + + /* + set_uv.sub(uv_warp_local_offset); + set_uv.scl(uv_warp_scale); + set_uv.add(uv_warp_global_offset); + */ + + + this.store_uvs[0 + cur_uvs_index] = set_uv[Q_X]; + this.store_uvs[1 + cur_uvs_index] = set_uv[Q_Y]; + + + cur_uvs_index += 2; + } +}; + +MeshRenderRegion.prototype.restoreRefUv = function() +{ + var cur_uvs_index = this.getUVsIndex(); + for(var i = 0; i < this.uv_warp_ref_uvs.length; i++) { + var set_uv = this.uv_warp_ref_uvs[i]; + + this.store_uvs[0 + cur_uvs_index] = set_uv[Q_X]; + this.store_uvs[1 + cur_uvs_index] = set_uv[Q_Y]; + + cur_uvs_index += 2; + } +}; + +MeshRenderRegion.prototype.getTagId = function() +{ + return this.tag_id; +}; + +MeshRenderRegion.prototype.setTagId = function(value_in) +{ + this.tag_id = value_in; +}; + +MeshRenderRegion.prototype.initFastNormalWeightMap = function(bones_map) +{ + this.relevant_bones_indices = []; + + // fast normal weight map lookup, avoids hash lookups + for (var cur_key in bones_map) { + var values = this.normal_weight_map[cur_key]; + this.fast_normal_weight_map.push(values); + } + + // relevant bone indices + var cutoff_val = 0.05; + for(var i = 0; i < this.getNumPts(); i++) { + var curIndicesArray = []; + for (var j = 0; j < this.fast_normal_weight_map.length; j++) + { + var cur_val = this.fast_normal_weight_map[j][i]; + if(cur_val > cutoff_val) + { + curIndicesArray.push(j); + } + } + + this.relevant_bones_indices.push(curIndicesArray); + } + + // fast bone map lookup + for (var cur_key in bones_map) { + var cur_bone = bones_map[cur_key]; + this.fast_bones_map.push(cur_bone); + } +}; + +MeshRenderRegion.prototype.initUvWarp = function() +{ + var cur_uvs_index = this.getUVsIndex(); + // uv_warp_ref_uvs = new java.util.Vector(new Vector2[getNumPts()]); + this.uv_warp_ref_uvs = [];; + + for(var i = 0; i < this.getNumPts(); i++) { + this.uv_warp_ref_uvs.push(vec2.create()); + + this.uv_warp_ref_uvs[i] = vec2.fromValues(this.store_uvs[cur_uvs_index], + this.store_uvs[cur_uvs_index + 1]); + + + + cur_uvs_index += 2; + } +}; + + +// MeshRenderBoneComposition +function MeshRenderBoneComposition() +{ + this.root_bone = null; + this.bones_map = {}; + this.regions = []; + this.regions_map = {}; +}; + +MeshRenderBoneComposition.prototype.addRegion = function(region_in) +{ + this.regions.push(region_in); +}; + +MeshRenderBoneComposition.prototype.setRootBone = function(root_bone_in) +{ + this.root_bone = root_bone_in; +}; + +MeshRenderBoneComposition.prototype.getRootBone = function() +{ + return this.root_bone; +}; + +MeshRenderBoneComposition.prototype.initBoneMap = function() +{ + this.bones_map = MeshRenderBoneComposition.genBoneMap(this.root_bone); +}; + +MeshRenderBoneComposition.prototype.initRegionsMap = function() +{ + this.regions_map = {}; + for(var i = 0; i < this.regions.length; i++) { + cur_key = this.regions[i].getName(); + this.regions_map[cur_key] = this.regions[i]; + } +}; + +MeshRenderBoneComposition.genBoneMap = function(input_bone) +{ + var ret_map = {}; + var all_keys = input_bone.getAllBoneKeys(); + for(var i = 0; i < all_keys.length; i++) { + var cur_key = all_keys[i]; + ret_map[cur_key] = input_bone.getChildByKey(cur_key); + } + + return ret_map; +}; + +MeshRenderBoneComposition.prototype.getBonesMap = function() +{ + return this.bones_map; +}; + +MeshRenderBoneComposition.prototype.getRegionsMap = function() +{ + return this.regions_map; +}; + +MeshRenderBoneComposition.prototype.getRegions = function() +{ + return this.regions; +}; + +MeshRenderBoneComposition.prototype.getRegionWithId = function(id_in) +{ + for(var i = 0; i < this.regions.length; i++) { + var cur_region = this.regions[i]; + if(cur_region.getTagId() == id_in) { + return cur_region; + } + } + + return null; +}; + +MeshRenderBoneComposition.prototype.resetToWorldRestPts = function() +{ + this.getRootBone().initWorldPts(); +}; + +MeshRenderBoneComposition.prototype.updateAllTransforms = function(update_parent_xf) +{ + if(update_parent_xf) { + this.getRootBone().computeParentTransforms(); + } + + this.getRootBone().computeWorldDeltaTransforms(); + this.getRootBone().fixDQs(this.getRootBone().getWorldDq()); +}; + +// MeshBoneCache +function MeshBoneCache(key_in) +{ + this.key = key_in; +}; + +MeshBoneCache.prototype.setWorldStartPt = function(pt_in) { + this.world_start_pt = pt_in; +}; + +MeshBoneCache.prototype.setWorldEndPt = function(pt_in) { + this.world_end_pt = pt_in; +}; + +MeshBoneCache.prototype.getWorldStartPt = function() { + return this.world_start_pt; +}; + +MeshBoneCache.prototype.getWorldEndPt = function() { + return this.world_end_pt; +}; + +MeshBoneCache.prototype.getKey = function() { + return this.key; +}; + +// MeshDisplacementCache +function MeshDisplacementCache(key_in) +{ + this.key = key_in; + this.local_displacements = []; + this.post_displacements = []; +}; + +MeshDisplacementCache.prototype.setLocalDisplacements = function(displacements_in) +{ + this.local_displacements = displacements_in; +}; + +MeshDisplacementCache.prototype.setPostDisplacements = function(displacements_in) +{ + this.post_displacements = displacements_in; +}; + +MeshDisplacementCache.prototype.getKey = function() { + return this.key; +}; + +MeshDisplacementCache.prototype.getLocalDisplacements = function() +{ + return this.local_displacements; +}; + +MeshDisplacementCache.prototype.getPostDisplacements = function() +{ + return this.post_displacements; +}; + + +// MeshUVWarpCache +function MeshUVWarpCache(key_in) +{ + this.uv_warp_global_offset = vec2.create(); + this.uv_warp_local_offset = vec2.create(); + this.uv_warp_scale = vec2.fromValues(-1,-1); + this.key = key_in; + this.enabled = false; +}; + +MeshUVWarpCache.prototype.setUvWarpLocalOffset = function(vec_in) +{ + this.uv_warp_local_offset = vec_in; +}; + +MeshUVWarpCache.prototype.setUvWarpGlobalOffset = function(vec_in) +{ + this.uv_warp_global_offset = vec_in; +}; + +MeshUVWarpCache.prototype.setUvWarpScale = function(vec_in) +{ + this.uv_warp_scale = vec_in; +}; + +MeshUVWarpCache.prototype.getUvWarpLocalOffset = function() +{ + return this.uv_warp_local_offset; +}; + +MeshUVWarpCache.prototype.getUvWarpGlobalOffset = function() +{ + return this.uv_warp_global_offset; +}; + +MeshUVWarpCache.prototype.getUvWarpScale = function() +{ + return this.uv_warp_scale; +}; + +MeshUVWarpCache.prototype.getKey = function() { + return this.key; +}; + +MeshUVWarpCache.prototype.setEnabled = function(flag_in) +{ + this.enabled = flag_in; +}; + +MeshUVWarpCache.prototype.getEnabled = function() { + return this.enabled; +}; + +// MeshBoneCacheManager +function MeshBoneCacheManager() +{ + this.is_ready = false; + this.bone_cache_table = null; + this.bone_cache_data_ready = null; + this.bone_cache_table = []; + this.bone_cache_data_ready = []; +}; + +MeshBoneCacheManager.prototype.init = function(start_time_in, end_time_in) +{ + this.start_time = start_time_in; + this.end_time = end_time_in; + + var num_frames = this.end_time - this.start_time + 1; + this.bone_cache_table = []; + + this.bone_cache_data_ready = []; + for(var i = 0; i < num_frames; i++) { + this.bone_cache_table.push([]); + this.bone_cache_data_ready.push(false); + } + + this.is_ready = false; +}; + +MeshBoneCacheManager.prototype.getStartTime = function() +{ + return this.start_time; +}; + +MeshBoneCacheManager.prototype.getEndime = function() +{ + return this.end_time; +}; + +MeshBoneCacheManager.prototype.getIndexByTime = function(time_in) +{ + var retval = time_in - this.start_time; + retval = Utils.clamp(retval, 0, (this.bone_cache_table.length) - 1); + + return retval; +}; + +MeshBoneCacheManager.prototype.retrieveValuesAtTime = function(time_in, bone_map) +{ + var base_time = this.getIndexByTime(Math.floor(time_in)); + var end_time = this.getIndexByTime(Math.ceil(time_in)); + + var ratio = (time_in - Math.floor(time_in)); + + if(this.bone_cache_data_ready.length == 0) { + return; + } + + if((this.bone_cache_data_ready[base_time] == false) + || ((this.bone_cache_data_ready[end_time] == false))) + { + return; + } + + var base_cache = this.bone_cache_table[base_time]; + var end_cache = this.bone_cache_table[end_time]; + + for(var i = 0, l = base_cache.length; i < l; i++) { + var base_data = base_cache[i]; + var end_data = end_cache[i]; + var cur_key = base_data.getKey(); + + var final_world_start_pt = Utils.vecInterp(base_data.getWorldStartPt(), end_data.getWorldStartPt(), ratio); + + var final_world_end_pt = Utils.vecInterp(base_data.getWorldEndPt(), end_data.getWorldEndPt(), ratio); + + /* + Vector3 final_world_start_pt = ((1.0f - ratio) * base_data.getWorldStartPt()) + + (ratio * end_data.getWorldStartPt()); + + Vector3 final_world_end_pt = ((1.0f - ratio) * base_data.getWorldEndPt()) + + (ratio * end_data.getWorldEndPt()); + */ + + bone_map[cur_key].setWorldStartPt(final_world_start_pt); + bone_map[cur_key].setWorldEndPt(final_world_end_pt); + } +}; + +MeshBoneCacheManager.prototype.allReady = function() +{ + if(this.is_ready) { + return true; + } + else { + var num_frames = this.end_time - this.start_time + 1; + var ready_cnt = 0; + for(var i = 0; i < this.bone_cache_data_ready.size(); i++) { + if(this.bone_cache_data_ready[i]) { + ready_cnt++; + } + } + + if(ready_cnt == num_frames) { + this.is_ready = true; + } + } + + return this.is_ready; +}; + +MeshBoneCacheManager.prototype.makeAllReady = function() +{ + for(var i = 0; i < this.bone_cache_data_ready.length; i++) { + this.bone_cache_data_ready[i] = true; + } +}; + +// MeshDisplacementCacheManager +function MeshDisplacementCacheManager() +{ + this.is_ready = false; + this.displacement_cache_table = null; + this.displacement_cache_data_ready = null; + this.displacement_cache_table = []; + this.displacement_cache_data_ready = []; +}; + +MeshDisplacementCacheManager.prototype.init = function(start_time_in, end_time_in) +{ + this.start_time = start_time_in; + this.end_time = end_time_in; + + var num_frames = this.end_time - this.start_time + 1; + this.displacement_cache_table = []; + + this.displacement_cache_data_ready = []; + for(var i = 0; i < num_frames; i++) { + this.displacement_cache_table.push([]); + this.displacement_cache_data_ready.push(false); + } + + this.is_ready = false; +}; + +MeshDisplacementCacheManager.prototype.getStartTime = function() +{ + return this.start_time; +}; + +MeshDisplacementCacheManager.prototype.getEndime = function() +{ + return this.end_time; +}; + +MeshDisplacementCacheManager.prototype.getIndexByTime = function(time_in) +{ + var retval = time_in - this.start_time; + retval = Utils.clamp(retval, 0, (this.displacement_cache_table.length) - 1); + + return retval; +}; + +MeshDisplacementCacheManager.prototype.retrieveValuesAtTime = function(time_in, regions_map) +{ + var base_time = this.getIndexByTime(Math.floor(time_in)); + var end_time = this.getIndexByTime(Math.ceil(time_in)); + + var ratio = (time_in - Math.floor(time_in)); + + if(this.displacement_cache_data_ready.length == 0) { + return; + } + + if((this.displacement_cache_data_ready[base_time] == false) + || (this.displacement_cache_data_ready[end_time] == false)) + { + return; + } + + var base_cache = this.displacement_cache_table[base_time]; + var end_cache = this.displacement_cache_table[end_time]; + + for(var i = 0; i < base_cache.length; i++) { + var base_data = base_cache[i]; + var end_data = end_cache[i]; + var cur_key = base_data.getKey(); + + var set_region = regions_map[cur_key]; + + if(set_region.getUseLocalDisplacements()) { + var displacements = + set_region.local_displacements; + if((base_data.getLocalDisplacements().length == displacements.length) + && (end_data.getLocalDisplacements().length == displacements.length)) + { + for(var j = 0; j < displacements.length; j++) { + var interp_val = Utils.vec2Interp(base_data.getLocalDisplacements()[j], + end_data.getLocalDisplacements()[j], + ratio); + + /* + Vector2 interp_val = + ((1.0f - ratio) * base_data.getLocalDisplacements().get(j)) + + (ratio * end_data.getLocalDisplacements().get(j)); + */ + + displacements[j] = interp_val; + } + } + else { + for(var j = 0; j < displacements.length; j++) { + displacements[j] = vec2.create(); + } + } + } + + if(set_region.getUsePostDisplacements()) { + var displacements = + set_region.post_displacements; + if((base_data.getPostDisplacements().length == displacements.length) + && (end_data.getPostDisplacements().length == displacements.length)) + { + + for(var j = 0; j < displacements.length; j++) { + var interp_val = Utils.vec2Interp(base_data.getPostDisplacements()[j], + end_data.getPostDisplacements()[j], + ratio); + + /* + Vector2 interp_val = + ((1.0f - ratio) * base_data.getPostDisplacements()[j]) + + (ratio * end_data.getPostDisplacements()[j]); + */ + displacements[j] = interp_val; + } + } + else { + for(var j = 0; j < displacements.length; j++) { + displacements.set[j] = vec2.create(); + } + } + } + } +}; + +MeshDisplacementCacheManager.prototype.allReady = function() +{ + if(this.is_ready) { + return true; + } + else { + var num_frames = this.end_time - this.start_time + 1; + var ready_cnt = 0; + for(var i = 0; i < this.displacement_cache_data_ready.length; i++) { + if(this.displacement_cache_data_ready[i]) { + ready_cnt++; + } + } + + if(ready_cnt == num_frames) { + this.is_ready = true; + } + } + + return this.is_ready; +}; + +MeshDisplacementCacheManager.prototype.makeAllReady = function() +{ + for(var i = 0; i < this.displacement_cache_data_ready.length; i++) { + this.displacement_cache_data_ready[i] = true; + } +}; + +// MeshUVWarpCacheManager +function MeshUVWarpCacheManager() +{ + this.is_ready = false; + this.uv_cache_table = null; + this.uv_cache_data_ready = null; + this.uv_cache_table = []; + this.uv_cache_data_ready = []; +}; + +MeshUVWarpCacheManager.prototype.init = function(start_time_in, end_time_in) +{ + this.start_time = start_time_in; + this.end_time = end_time_in; + + var num_frames = this.end_time - this.start_time + 1; + this.uv_cache_table = []; + + this.uv_cache_data_ready = []; + for(var i = 0; i < num_frames; i++) { + this.uv_cache_table.push([]); + this.uv_cache_data_ready.push(false); + } + + this.is_ready = false; +}; + +MeshUVWarpCacheManager.prototype.getStartTime = function() +{ + return this.start_time; +}; + +MeshUVWarpCacheManager.prototype.getEndime = function() +{ + return this.end_time; +}; + +MeshUVWarpCacheManager.prototype.getIndexByTime = function(time_in) +{ + var retval = time_in - this.start_time; + retval = Utils.clamp(retval, 0, (this.uv_cache_table.length) - 1); + + return retval; +}; + +MeshUVWarpCacheManager.prototype.retrieveValuesAtTime = function(time_in, regions_map) +{ + var base_time = this.getIndexByTime(Math.floor(time_in)); + var end_time = this.getIndexByTime(Math.ceil(time_in)); + + var ratio = (time_in - Math.floor(time_in)); + + if(this.uv_cache_data_ready.length == 0) { + return; + } + + if((this.uv_cache_data_ready[base_time] == false) + || (this.uv_cache_data_ready[end_time] == false)) + { + return; + } + + var base_cache = this.uv_cache_table[base_time]; + var end_cache = this.uv_cache_table[end_time]; + + for(var i = 0; i < base_cache.length; i++) { + var base_data = base_cache[i]; + var end_data = end_cache[i]; + var cur_key = base_data.getKey(); + + var set_region = regions_map[cur_key]; + if(set_region.getUseUvWarp()) { + var final_local_offset = base_data.getUvWarpLocalOffset(); + + + var final_global_offset = base_data.getUvWarpGlobalOffset(); + + var final_scale = base_data.getUvWarpScale(); + /* + Vector2 final_local_offset = ((1.0f - ratio) * base_data.getUvWarpLocalOffset()) + + (ratio * end_data.getUvWarpLocalOffset()); + + Vector2 final_global_offset = ((1.0f - ratio) * base_data.getUvWarpGlobalOffset()) + + (ratio * end_data.getUvWarpGlobalOffset()); + + Vector2 final_scale = ((1.0f - ratio) * base_data.getUvWarpScale()) + + (ratio * end_data.getUvWarpScale()); + + */ + + + set_region.setUvWarpLocalOffset(final_local_offset); + set_region.setUvWarpGlobalOffset(final_global_offset); + set_region.setUvWarpScale(final_scale); + } + } +}; + +MeshUVWarpCacheManager.prototype.allReady = function() +{ + if(this.is_ready) { + return true; + } + else { + var num_frames = this.end_time - this.start_time + 1; + var ready_cnt = 0; + for(var i = 0; i < this.uv_cache_data_ready.length; i++) { + if(uv_cache_data_ready[i]) { + ready_cnt++; + } + } + + if(ready_cnt == num_frames) { + this.is_ready = true; + } + } + + return this.is_ready; +}; + +MeshUVWarpCacheManager.prototype.makeAllReady = function() +{ + for(var i = 0; i < this.uv_cache_data_ready.length; i++) { + this.uv_cache_data_ready[i] = true; + } +}; + +// CreatureModuleUtils +var CreatureModuleUtils = {}; + +CreatureModuleUtils.GetAllAnimationNames = function(json_data) +{ + var json_animations = json_data["animation"]; + var keys = []; + for (var name in json_animations) + { + keys.push(name); + } + + return keys; +}; + +CreatureModuleUtils.getFloatArray = function(raw_data) +{ + return raw_data; +}; + +CreatureModuleUtils.getIntArray = function(raw_data) +{ + return raw_data; +}; + + +CreatureModuleUtils.ReadPointsArray2DJSON = function(data, key) +{ + var raw_array = CreatureModuleUtils.getFloatArray(data[key]); + var ret_list = []; + var num_points = raw_array.length / 2; + for (var i = 0; i < num_points; i++) + { + var cur_index = i * 2; + ret_list.push( + vec2.fromValues(raw_array[0 + cur_index], raw_array[1 + cur_index])); + } + + return ret_list; +}; + +CreatureModuleUtils.ReadFloatArray3DJSON = function(data, key) +{ + var raw_array = CreatureModuleUtils.getFloatArray(data[key]); + + var ret_list = []; + var num_points = raw_array.length / 2; + for (var i = 0; i < num_points; i++) + { + var cur_index = i * 2; + ret_list.push(raw_array[0 + cur_index]); + ret_list.push(raw_array[1 + cur_index]); + ret_list.push(0); + } + + return ret_list; +}; + +CreatureModuleUtils.ReadBoolJSON = function(data, key) +{ + var val = data[key]; + return val; +}; + +CreatureModuleUtils.ReadFloatArrayJSON = function(data, key) +{ + /* + var raw_array = getFloatArray(data.get[key]); + var ret_list = []; + for(var i = 0; i < raw_array.length; i++) + { + ret_list.push(raw_array[i]); + } + + return ret_list; + */ + + return data[key]; +}; + +CreatureModuleUtils.ReadIntArrayJSON = function(data, key) +{ + /* + int[] raw_array = getIntArray (data.get(key)); + java.util.Vector ret_list = new java.util.Vector(); + + for(int i = 0; i < raw_array.length; i++) { + ret_list.add(raw_array[i]); + } + + return ret_list; + */ + return data[key]; +}; + +CreatureModuleUtils.ReadMatrixJSON = function(data, key) +{ + var raw_array = CreatureModuleUtils.getFloatArray(data[key]); + var retMat = mat4.create(); + for(var i = 0; i < 16; i++) + { + retMat[i] = raw_array[i]; + } + + return retMat; +}; + +CreatureModuleUtils.ReadVector2JSON = function(data, key) +{ + var raw_array = CreatureModuleUtils.getFloatArray(data[key]); + return vec2.fromValues(raw_array[0], raw_array[1]); +}; + + +CreatureModuleUtils.ReadVector3JSON = function(data, key) +{ + var raw_array = CreatureModuleUtils.getFloatArray(data[key]); + return vec3.fromValues(raw_array[0], raw_array[1], 0); +}; + +CreatureModuleUtils.CreateBones = function(json_obj, key) { + var root_bone = null; + var base_obj = json_obj[key]; + //var bone_data = new HashMap>>(); + var bone_data = {}; + var child_set = {}; + + // layout bones + for (var cur_name in base_obj) + { + + var cur_node = base_obj[cur_name]; + + var cur_id = cur_node["id"]; //GetJSONNodeFromKey(*cur_node, "id")->value.toNumber(); + var cur_parent_mat = CreatureModuleUtils.ReadMatrixJSON(cur_node, "restParentMat"); + + var cur_local_rest_start_pt = CreatureModuleUtils.ReadVector3JSON(cur_node, "localRestStartPt"); + var cur_local_rest_end_pt = CreatureModuleUtils.ReadVector3JSON(cur_node, "localRestEndPt"); + var cur_children_ids = CreatureModuleUtils.ReadIntArrayJSON(cur_node, "children"); + + var new_bone = new MeshBone(cur_name, + vec3.create(), + vec3.create(), + cur_parent_mat); + new_bone.local_rest_start_pt = cur_local_rest_start_pt; + new_bone.local_rest_end_pt = cur_local_rest_end_pt; + new_bone.calcRestData(); + new_bone.setTagId(cur_id); + + bone_data[cur_id] = {first:new_bone, second:cur_children_ids}; + + for(var i = 0; i < cur_children_ids.length; i++){ + var cur_child_id = cur_children_ids[i]; + child_set[cur_child_id] = cur_child_id; + } + } + + // Find root + for(var cur_id in bone_data) + { + if( (cur_id in child_set) == false) { + // not a child, so is root + var cur_data = bone_data[cur_id]; + root_bone = cur_data.first; + break; + } + } + + // construct hierarchy + for(var cur_id in bone_data) + { + var cur_data = bone_data[cur_id]; + + var cur_bone = cur_data.first; + var children_ids = cur_data.second; + for(var i = 0; i < children_ids.length; i++) + { + var cur_child_id = children_ids[i]; + var child_bone = bone_data[cur_child_id].first; + cur_bone.addChild(child_bone); + } + + } + + + return root_bone; +}; + +CreatureModuleUtils.CreateRegions = function(json_obj, key, indices_in, rest_pts_in, uvs_in) +{ + var ret_regions = []; + var base_obj = json_obj[key]; + + for (var cur_name in base_obj) + { + var cur_node = base_obj[cur_name]; + + var cur_id = cur_node["id"]; //(int)GetJSONNodeFromKey(*cur_node, "id")->value.toNumber(); + var cur_start_pt_index = cur_node["start_pt_index"]; //(int)GetJSONNodeFromKey(*cur_node, "start_pt_index")->value.toNumber(); + var cur_end_pt_index = cur_node["end_pt_index"]; //(int)GetJSONNodeFromKey(*cur_node, "end_pt_index")->value.toNumber(); + var cur_start_index = cur_node["start_index"]; //(int)GetJSONNodeFromKey(*cur_node, "start_index")->value.toNumber(); + var cur_end_index = cur_node["end_index"]; //(int)GetJSONNodeFromKey(*cur_node, "end_index")->value.toNumber(); + + var new_region = new MeshRenderRegion(indices_in, + rest_pts_in, + uvs_in, + cur_start_pt_index, + cur_end_pt_index, + cur_start_index, + cur_end_index); + + new_region.setName(cur_name); + new_region.setTagId(cur_id); + + // Read in weights + var weight_map = + new_region.normal_weight_map; + var weight_obj = cur_node["weights"]; + + for (var w_key in weight_obj) + { + var w_node = weight_obj[w_key]; + var values = CreatureModuleUtils.ReadFloatArrayJSON(weight_obj, w_key); + weight_map[w_key] = values; + } + + ret_regions.push(new_region); + } + + return ret_regions; +}; + +CreatureModuleUtils.GetStartEndTimes = function(json_obj, key) +{ + var start_time = 0; + var end_time = 0; + var first = true; + var base_obj = json_obj[key]; + + for (var cur_val in base_obj) + { + var cur_node = base_obj[cur_val]; + var cur_num = parseInt(cur_val); + if(first) { + start_time = cur_num; + end_time = cur_num; + first = false; + } + else { + if(cur_num > end_time) { + end_time = cur_num; + } + + if(cur_num < start_time) { + start_time = cur_num; + } + } + } + + return {first:start_time, second:end_time}; +}; + +CreatureModuleUtils.FillBoneCache = function(json_obj, key, start_time, end_time, cache_manager) +{ + var base_obj = json_obj[key]; + + cache_manager.init(start_time, end_time); + + for (var cur_time in base_obj) + { + var cur_node = base_obj[cur_time]; + + cache_list = []; + + for (var cur_name in cur_node) + { + var bone_node = cur_node[cur_name]; + + var cur_start_pt = CreatureModuleUtils.ReadVector3JSON(bone_node, "start_pt"); //ReadJSONVec4_2(*bone_node, "start_pt"); + var cur_end_pt = CreatureModuleUtils.ReadVector3JSON(bone_node, "end_pt"); //ReadJSONVec4_2(*bone_node, "end_pt"); + + var cache_data = new MeshBoneCache(cur_name); + cache_data.setWorldStartPt(cur_start_pt); + cache_data.setWorldEndPt(cur_end_pt); + + cache_list.push(cache_data); + } + + var set_index = cache_manager.getIndexByTime(cur_time); + cache_manager.bone_cache_table[set_index] = cache_list; + } + + cache_manager.makeAllReady(); +}; + +CreatureModuleUtils.FillDeformationCache = function(json_obj, key, start_time, end_time, cache_manager) +{ + var base_obj = json_obj[key]; + + cache_manager.init(start_time, end_time); + + for (var cur_time in base_obj) + { + var cur_node = base_obj[cur_time]; + + var cache_list = []; + + for (var cur_name in cur_node) + { + var mesh_node = cur_node[cur_name]; + + var cache_data = new MeshDisplacementCache(cur_name); + + var use_local_displacement = CreatureModuleUtils.ReadBoolJSON(mesh_node, "use_local_displacements"); //GetJSONNodeFromKey(*mesh_node, "use_local_displacements")->value.toBool(); + var use_post_displacement = CreatureModuleUtils.ReadBoolJSON(mesh_node, "use_post_displacements"); //GetJSONNodeFromKey(*mesh_node, "use_post_displacements")->value.toBool(); + + if(use_local_displacement == true) { + var read_pts = CreatureModuleUtils.ReadPointsArray2DJSON(mesh_node, "local_displacements"); //ReadJSONPoints2DVector(*mesh_node, "local_displacements"); + cache_data.setLocalDisplacements(read_pts); + } + + if(use_post_displacement == true) { + var read_pts = CreatureModuleUtils.ReadPointsArray2DJSON(mesh_node, "post_displacements"); //ReadJSONPoints2DVector(*mesh_node, "post_displacements"); + cache_data.setPostDisplacements(read_pts); + } + + cache_list.push(cache_data); + } + + var set_index = cache_manager.getIndexByTime(cur_time); + cache_manager.displacement_cache_table[set_index] = cache_list; + } + + cache_manager.makeAllReady(); +}; + +CreatureModuleUtils.FillUVSwapCache = function(json_obj, key, start_time, end_time, cache_manager) +{ + var base_obj = json_obj[key]; + + cache_manager.init(start_time, end_time); + + for (var cur_time in base_obj) + { + var cur_node = base_obj[cur_time]; + + var cache_list = []; + + for (var cur_name in cur_node) + { + var uv_node = cur_node[cur_name]; + + var cache_data = new MeshUVWarpCache(cur_name); + var use_uv = CreatureModuleUtils.ReadBoolJSON(uv_node, "enabled"); //GetJSONNodeFromKey(*uv_node, "enabled")->value.toBool(); + cache_data.setEnabled(use_uv); + if(use_uv == true) { + var local_offset = CreatureModuleUtils.ReadVector2JSON(uv_node, "local_offset"); //ReadJSONVec2(*uv_node, "local_offset"); + var global_offset = CreatureModuleUtils.ReadVector2JSON(uv_node, "global_offset"); //ReadJSONVec2(*uv_node, "global_offset"); + var scale = CreatureModuleUtils.ReadVector2JSON(uv_node, "scale"); //ReadJSONVec2(*uv_node, "scale"); + cache_data.setUvWarpLocalOffset(local_offset); + cache_data.setUvWarpGlobalOffset(global_offset); + cache_data.setUvWarpScale(scale); + } + + cache_list.push(cache_data); + } + + var set_index = cache_manager.getIndexByTime(cur_time); + cache_manager.uv_cache_table[set_index] = cache_list; + } + + cache_manager.makeAllReady(); +}; + +// Creature +function Creature(load_data) +{ + 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(load_data); +}; + +// Fills entire mesh with (r,g,b,a) colours +Creature.prototype.FillRenderColours = function(r, g, b, a) +{ + for(var i = 0; i < this.total_num_pts; i++) + { + var cur_colour_index = i * 4; + this.render_colours[0 + cur_colour_index] = r; + this.render_colours[1 + cur_colour_index] = g; + this.render_colours[2 + cur_colour_index] = b; + this.render_colours[3 + cur_colour_index] = a; + } +}; + +// Compute boundary indices + +Creature.prototype.ComputeBoundaryIndices = function() +{ + var freq_table = {}; + for(var i = 0; i < this.total_num_pts; i++) + { + freq_table[i] = 0; + } + + var cur_regions = this.render_composition.getRegions(); + for(var i = 0; i < this.global_indices.length; i++) + { + var cur_idx = this.global_indices[i]; + var is_found = false; + for(var j = 0; j < cur_regions.length; j++) + { + var cur_region = cur_regions[j]; + var cur_start_index = cur_region.getStartPtIndex(); + var cur_end_index = cur_region.getEndPtIndex(); + + if(cur_idx >= cur_start_index && cur_idx <= cur_end_index) + { + is_found = true; + break; + } + } + + + if(is_found) + { + freq_table[cur_idx]++; + } + } + + // now find the boundary indices who have <= 5 referenced triangles + this.boundary_indices = []; + for(var i = 0; i < this.total_num_pts; i++) + { + if(freq_table[i] <=5) + { + this.boundary_indices.push(i); + } + } +}; + +// Compute min and max bounds of the animated mesh +Creature.prototype.ComputeBoundaryMinMax = function() +{ + + if(this.boundary_indices.length <= 0) + { + this.ComputeBoundaryIndices(); + } + + + var firstIdx = this.boundary_indices[0] * 3; + var minPt = vec2.fromValues(this.render_pts[firstIdx + 0], this.render_pts[firstIdx + 1]); + var maxPt = vec2.fromValues(minPt[0], minPt[1]); + + + for(var i = 0; i < this.boundary_indices.length; i++) + { + var ref_idx = this.boundary_indices[i] * 3; + var ref_x = this.render_pts[ref_idx]; + var ref_y = this.render_pts[ref_idx + 1]; + + if(minPt[0] > ref_x) + { + minPt[0] = ref_x; + } + + if(minPt[1] > ref_y) + { + minPt[1] = ref_y; + } + + if(maxPt[0] < ref_x) + { + maxPt[0] = ref_x; + } + + if(maxPt[1] < ref_y) + { + maxPt[1] = ref_y; + } + } + + this.boundary_min = minPt; + this.boundary_max = maxPt; +}; + + +// Load data +Creature.prototype.LoadFromData = function(load_data) +{ + // Load points and topology + var json_mesh = load_data["mesh"]; + + this.global_pts = CreatureModuleUtils.ReadFloatArray3DJSON(json_mesh, "points"); + this.total_num_pts = this.global_pts.length / 3; + + this.global_indices = CreatureModuleUtils.ReadIntArrayJSON (json_mesh, "indices"); + this.total_num_indices = this.global_indices.length; + + this.global_uvs = CreatureModuleUtils.ReadFloatArrayJSON (json_mesh, "uvs"); + + + this.render_colours = []; + for(var i = 0; i < this.total_num_pts * 4; i++) + { + this.render_colours.push(0); + } + this.FillRenderColours(1, 1, 1, 1); + + this.render_pts = []; + + // Load bones + var root_bone = CreatureModuleUtils.CreateBones(load_data, "skeleton"); + + + // Load regions + var regions = CreatureModuleUtils.CreateRegions(json_mesh, + "regions", + this.global_indices, + this.global_pts, + this.global_uvs); + + // Add into composition + this.render_composition = new MeshRenderBoneComposition(); + this.render_composition.setRootBone(root_bone); + this.render_composition.getRootBone().computeRestParentTransforms(); + + for(var i = 0; i < regions.length; i++) { + var cur_region = regions[i]; + cur_region.setMainBoneKey(root_bone.getKey()); + cur_region.determineMainBone(root_bone); + this.render_composition.addRegion(cur_region); + } + + this.render_composition.initBoneMap(); + this.render_composition.initRegionsMap(); + + for(var i = 0; i < regions.length; i++) { + var cur_region = regions[i]; + cur_region.initFastNormalWeightMap(this.render_composition.bones_map); + } + + this.render_composition.resetToWorldRestPts(); +}; + +// CreatureAnimation +function CreatureAnimation(load_data, name_in) +{ + this.name = name_in; + 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(name_in, load_data); +}; + +CreatureAnimation.prototype.LoadFromData = function(name_in, load_data) +{ + var json_anim_base = load_data["animation"]; + var json_clip = json_anim_base[name_in]; + + var start_end_times = CreatureModuleUtils.GetStartEndTimes(json_clip, "bones"); + this.start_time = start_end_times.first; + this.end_time = start_end_times.second; + + // bone animation + CreatureModuleUtils.FillBoneCache(json_clip, + "bones", + this.start_time, + this.end_time, + this.bones_cache); + + // mesh deformation animation + CreatureModuleUtils.FillDeformationCache(json_clip, + "meshes", + this.start_time, + this.end_time, + this.displacement_cache); + + // uv swapping animation + CreatureModuleUtils.FillUVSwapCache(json_clip, + "uv_swaps", + this.start_time, + this.end_time, + this.uv_warp_cache); +}; + +CreatureAnimation.prototype.getIndexByTime = function(time_in) +{ + var retval = time_in - this.start_time; + retval = Utils.clamp(retval, 0, (this.cache_pts.length) - 1); + + return retval; +}; + +CreatureAnimation.prototype.verifyFillCache = function() +{ + if(this.fill_cache_pts.length == (this.end_time - this.start_time + 1)) + { + // ready to switch over + this.cache_pts = this.fill_cache_pts; + } +}; + +CreatureAnimation.prototype.poseFromCachePts = function(time_in, target_pts, num_pts) +{ + var cur_floor_time = this.getIndexByTime(Math.floor(time_in)); + var cur_ceil_time = this.getIndexByTime(Math.ceil(time_in)); + var cur_ratio = time_in - Math.floor(time_in); + + var set_pt = target_pts; + var floor_pts = this.cache_pts[cur_floor_time]; + var ceil_pts = this.cache_pts[cur_ceil_time]; + + var set_idx = 0; + var floor_idx = 0; + var ceil_idx = 0; + + for(var i = 0; i < num_pts; i++) + { + set_pt[set_idx + 0] = ((1.0 - cur_ratio) * floor_pts[floor_idx + 0]) + (cur_ratio * ceil_pts[ceil_idx + 0]); + set_pt[set_idx + 1] = ((1.0 - cur_ratio) * floor_pts[floor_idx + 1]) + (cur_ratio * ceil_pts[ceil_idx + 1]); + set_pt[set_idx + 2] = ((1.0 - cur_ratio) * floor_pts[floor_idx + 2]) + (cur_ratio * ceil_pts[ceil_idx + 2]); + + set_idx += 3; + floor_idx += 3; + ceil_idx += 3; + } +}; + +// CreatureManager +function CreatureManager(target_creature_in) +{ + this.target_creature = target_creature_in; + this.is_playing = false; + this.run_time = 0; + this.time_scale = 30.0; + this.blending_factor = 0; + this.should_loop = true; + this.use_custom_time_range = false; + 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 = false; + + this.active_blend_animation_names = []; + this.active_blend_animation_names.push(""); + this.active_blend_animation_names.push(""); +}; + +// Create an animation +CreatureManager.prototype.CreateAnimation = function(load_data, name_in) +{ + var new_animation = new CreatureAnimation(load_data, name_in); + this.AddAnimation(new_animation); +}; + +// Create all animations +CreatureManager.prototype.CreateAllAnimations = function(load_data) +{ + var all_animation_names = CreatureModuleUtils.GetAllAnimationNames (load_data); + for(var i = 0; i < all_animation_names.length; i++) + { + var cur_name = all_animation_names[i]; + this.CreateAnimation(load_data, cur_name); + } + + this.SetActiveAnimationName (all_animation_names.get(0)); +}; + +// Add an animation +CreatureManager.prototype.AddAnimation = function(animation_in) +{ + this.animations[animation_in.name] = animation_in; +}; + +// Return an animation +CreatureManager.prototype.GetAnimation = function(name_in) +{ + return this.animations[name_in]; +}; + +// Return the creature +CreatureManager.prototype.GetCreature = function() +{ + return this.target_creature; +}; + +// Returns all the animation names +CreatureManager.prototype.GetAnimationNames = function() +{ + var ret_names = []; + for(var cur_name in animations) { + ret_names.push(cur_name); + } + + return ret_names; +}; + +// Sets the current animation to be active by name +CreatureManager.prototype.SetActiveAnimationName = function(name_in, check_already_active) +{ + if (name_in == null || (name_in in this.animations) == false) { + return false; + } + + if(check_already_active == true) + { + if(this.active_animation_name == name_in) + { + return false; + } + } + + this.active_animation_name = name_in; + var cur_animation = this.animations[this.active_animation_name]; + this.run_time = cur_animation.start_time; + + var displacement_cache_manager = cur_animation.displacement_cache; + var displacement_table = + displacement_cache_manager.displacement_cache_table[0]; + + var uv_warp_cache_manager = cur_animation.uv_warp_cache; + var uv_swap_table = + uv_warp_cache_manager.uv_cache_table[0]; + + var render_composition = + this.target_creature.render_composition; + + var all_regions = render_composition.getRegions(); + + var index = 0; + for(var i = 0; i < all_regions.length; i++) + { + var cur_region = all_regions[i]; + // Setup active or inactive displacements + var use_local_displacements = !(displacement_table[index].getLocalDisplacements().length == 0); + var use_post_displacements = !(displacement_table[index].getPostDisplacements().length == 0); + cur_region.setUseLocalDisplacements(use_local_displacements); + cur_region.setUsePostDisplacements(use_post_displacements); + + // Setup active or inactive uv swaps + cur_region.setUseUvWarp(uv_swap_table[index].getEnabled()); + + index++; + } + + return true; +}; + +// Returns the name of the currently active animation +CreatureManager.prototype.GetActiveAnimationName = function() +{ + return this.active_animation_name; +}; + +// Returns the table of all animations +CreatureManager.prototype.GetAllAnimations = function() +{ + return this.animations; +}; + +// Creates a point cache for the current animation +CreatureManager.prototype.MakePointCache = function(animation_name_in) +{ + var store_run_time = this.getRunTime(); + var cur_animation = this.animations[animation_name_in]; + if(cur_animation.length > 0) + { + // cache already generated, just exit + return; + } + + var cache_pts_list = cur_animation.cache_pts; + + for(var i = cur_animation.start_time; i <= cur_animation.end_time; i++) + { + this.setRunTime(i); + var new_pts = []; + for (var j = 0; j < this.target_creature.total_num_pts * 3; j++) new_pts[j] = 0; + //auto new_pts = new glm::float32[target_creature->GetTotalNumPoints() * 3]; + this.PoseCreature(animation_name_in, new_pts); + + cache_pts_list.push(new_pts); + } + + this.setRunTime(store_run_time); +}; + +// Fills up a single frame for a point cache animation +// Point caching is only enabled when the cache is FULLY filled up +// Remember the new filled cache is Appended onto the end of a list +// There is no indexing by time here so MAKE SURE this cache is filled up sequentially! +CreatureManager.prototype.FillSinglePointCacheFrame = function(animation_name_in, time_in) +{ + var store_run_time = this.getRunTime(); + var cur_animation = this.animations[animation_name_in]; + + this.setRunTime(time_in); + var new_pts = []; + for (var j = 0; j < this.target_creature.total_num_pts * 3; j++) new_pts[j] = 0; + this.PoseCreature(animation_name_in, new_pts); + + cur_animation.fill_cache_pts.push(new_pts); + cur_animation.verifyFillCache(); + + this.setRunTime(store_run_time); +}; + +// Returns if animation is playing +CreatureManager.prototype.GetIsPlaying = function() +{ + return this.is_playing; +}; + +// Sets whether to loop the animation +CreatureManager.prototype.SetShouldLoop = function(flag_in) +{ + this.should_loop = flag_in; +}; + +// Sets whether to use a user defined custom time range for the currently +// active animation clip +CreatureManager.prototype.SetUseCustomTimeRange = function(flag_in) +{ + this.use_custom_time_range = flag_in; +}; + +// Sets the user defined custom time range +CreatureManager.prototype.SetCustomTimeRange = function(start_time_in, end_time_in) +{ + this.custom_start_time = start_time_in; + this.custom_end_time = end_time_in; +}; + +// Sets whether the animation is playing +CreatureManager.prototype.SetIsPlaying = function(flag_in) +{ + this.is_playing = flag_in; +}; + +// Resets animation to start time +CreatureManager.prototype.ResetToStartTimes = function() +{ + var cur_animation = this.animations[active_animation_name]; + this.run_time = cur_animation.start_time; +}; + +// Sets the run time of the animation +CreatureManager.prototype.setRunTime = function(time_in) +{ + this.run_time = time_in; + this.correctTime (); +}; + +// Increments the run time of the animation by a delta value +CreatureManager.prototype.increRunTime = function(delta_in) +{ + this.run_time += delta_in; + this.correctTime (); +}; + +CreatureManager.prototype.correctTime = function() +{ + var cur_animation = this.animations[this.active_animation_name]; + var anim_start_time = cur_animation.start_time; + var anim_end_time = cur_animation.end_time; + + if(this.use_custom_time_range) + { + anim_start_time = this.custom_start_time; + anim_end_time = this.custom_end_time; + } + + if(this.run_time > anim_end_time) + { + if(this.should_loop) + { + this.run_time = anim_start_time; + } + else { + this.run_time = anim_end_time; + } + } + else if(this.run_time < anim_start_time) + { + if(this.should_loop) + { + this.run_time = anim_end_time; + } + else { + this.run_time = anim_start_time; + } + } +}; + +// Returns the current run time of the animation +CreatureManager.prototype.getRunTime = function() +{ + return this.run_time; +}; + +// Runs a single step of the animation for a given delta timestep +CreatureManager.prototype.Update = function(delta) +{ + if(!this.is_playing) + { + return; + } + + this.increRunTime(delta * this.time_scale); + + this.RunCreature (); +}; + +CreatureManager.prototype.RunAtTime = function(time_in) +{ + if(!this.is_playing) + { + return; + } + + this.setRunTime(time_in); + this.RunCreature (); +}; + +CreatureManager.prototype.RunCreature = function() +{ + if(this.do_blending) + { + for(var i = 0; i < 2; i++) { + var cur_animation = this.animations[this.active_blend_animation_names[i]]; + if(cur_animation.cache_pts.length > 0) + { + cur_animation.poseFromCachePts(this.getRunTime(), this.blend_render_pts[i], this.target_creature.total_num_pts); + } + else { + this.PoseCreature(this.active_blend_animation_names[i], this.blend_render_pts[i]); + } + } + + for(var j = 0; j < this.target_creature.total_num_pts * 3; j++) + { + var set_data_index = j; + var read_data_1 = this.blend_render_pts[0][j]; + var read_data_2 = this.blend_render_pts[1][j]; + /* + target_creature.render_pts[set_data_index] = + ((1.0f - blending_factor) * (read_data_1)) + + (blending_factor * (read_data_2)); + */ + this.target_creature.render_pts.set(set_data_index, + ((1.0 - blending_factor) * (read_data_1)) + + (blending_factor * (read_data_2))); + + } + } + else { + var cur_animation = this.animations[this.active_animation_name]; + if(cur_animation.cache_pts.length > 0) + { + cur_animation.poseFromCachePts(this.getRunTime(), this.target_creature.render_pts, this.target_creature.total_num_pts); + // cur_animation->poseFromCachePts(getRunTime(), target_creature->GetRenderPts(), target_creature->GetTotalNumPoints()); + } + else { + this.PoseCreature(this.active_animation_name, this.target_creature.render_pts); + } + } +}; + +// Sets scaling for time +CreatureManager.prototype.SetTimeScale = function(scale_in) +{ + this.time_scale = scale_in; +}; + +// Enables/Disables blending +CreatureManager.prototype.SetBlending = function(flag_in) +{ + this.do_blending = flag_in; + + if (this.do_blending) { + if (this.blend_render_pts[0].length == 0) { + var new_vec = []; + for(var i = 0; i < target_creature.total_num_pts * 3; i++) + { + new_vec.push(0); + } + + this.blend_render_pts.set(0, new_vec); + } + + if (this.blend_render_pts[1].length == 0) { + var new_vec = []; + for(var i = 0; i < this.target_creature.total_num_pts * 3; i++) + { + new_vec.push(0); + } + + this.blend_render_pts[1] = new_vec; + } + + } +}; + +// Sets blending animation names +CreatureManager.prototype.SetBlendingAnimations = function(name_1, name_2) +{ + this.active_blend_animation_names[0] = name_1; + this.active_blend_animation_names[1] = name_2; +}; + +// Sets the blending factor +CreatureManager.prototype.SetBlendingFactor = function(value_in) +{ + this.blending_factor = value_in; +}; + +// Given a set of coordinates in local creature space, +// see if any bone is in contact +CreatureManager.prototype.IsContactBone = function(pt_in, radius) +{ + var cur_bone = this.target_creature.render_composition.getRootBone(); + return this.ProcessContactBone(pt_in, radius, cur_bone); +}; + + +CreatureManager.prototype.PoseCreature = function(animation_name_in, target_pts) +{ + var cur_animation = this.animations[animation_name_in]; + + var bone_cache_manager = cur_animation.bones_cache; + var displacement_cache_manager = cur_animation.displacement_cache; + var uv_warp_cache_manager = cur_animation.uv_warp_cache; + + var render_composition = + this.target_creature.render_composition; + + // Extract values from caches + var bones_map = + render_composition.getBonesMap(); + var regions_map = + render_composition.getRegionsMap(); + + bone_cache_manager.retrieveValuesAtTime(this.getRunTime(), + bones_map); + + if(this.bones_override_callback != null) + { + this.bones_override_callback(bones_map); + } + + displacement_cache_manager.retrieveValuesAtTime(this.getRunTime(), + regions_map); + uv_warp_cache_manager.retrieveValuesAtTime(this.getRunTime(), + regions_map); + + + // Do posing, decide if we are blending or not + var cur_regions = + render_composition.getRegions(); + var cur_bones = + render_composition.getBonesMap(); + + render_composition.updateAllTransforms(false); + for(var j = 0, l = cur_regions.length; j < l; j++) { + var cur_region = cur_regions[j]; + + var cur_pt_index = cur_region.getStartPtIndex(); + + + cur_region.poseFinalPts(target_pts, + cur_pt_index * 3, + cur_bones); + + // add in z offsets for different regions + + var start = cur_region.getStartPtIndex() * 3; + var end = cur_region.getEndPtIndex() * 3; + for(var k = start; + k <= end; + k+=3) + { + target_pts[k + 2] = -j * 0.001; + } + + } +}; + diff --git a/build/creature.map b/build/creature.map new file mode 100644 index 000000000..f018483bd --- /dev/null +++ b/build/creature.map @@ -0,0 +1 @@ +{"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 new file mode 100644 index 000000000..69c1dd644 --- /dev/null +++ b/build/creature.min.js @@ -0,0 +1,6 @@ +/* Phaser v2.6.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;c0)){for(var d=c.cache_pts,e=c.start_time;e<=c.end_time;e++){this.setRunTime(e);for(var f=[],g=0;g<3*this.target_creature.total_num_pts;g++)f[g]=0;this.PoseCreature(a,f),d.push(f)}this.setRunTime(b)}},CreatureManager.prototype.FillSinglePointCacheFrame=function(a,b){var c=this.getRunTime(),d=this.animations[a];this.setRunTime(b);for(var e=[],f=0;f<3*this.target_creature.total_num_pts;f++)e[f]=0;this.PoseCreature(a,e),d.fill_cache_pts.push(e),d.verifyFillCache(),this.setRunTime(c)},CreatureManager.prototype.GetIsPlaying=function(){return this.is_playing},CreatureManager.prototype.SetShouldLoop=function(a){this.should_loop=a},CreatureManager.prototype.SetUseCustomTimeRange=function(a){this.use_custom_time_range=a},CreatureManager.prototype.SetCustomTimeRange=function(a,b){this.custom_start_time=a,this.custom_end_time=b},CreatureManager.prototype.SetIsPlaying=function(a){this.is_playing=a},CreatureManager.prototype.ResetToStartTimes=function(){var a=this.animations[active_animation_name];this.run_time=a.start_time},CreatureManager.prototype.setRunTime=function(a){this.run_time=a,this.correctTime()},CreatureManager.prototype.increRunTime=function(a){this.run_time+=a,this.correctTime()},CreatureManager.prototype.correctTime=function(){var a=this.animations[this.active_animation_name],b=a.start_time,c=a.end_time;this.use_custom_time_range&&(b=this.custom_start_time,c=this.custom_end_time),this.run_time>c?this.should_loop?this.run_time=b:this.run_time=c:this.run_timea;a++){var b=this.animations[this.active_blend_animation_names[a]];b.cache_pts.length>0?b.poseFromCachePts(this.getRunTime(),this.blend_render_pts[a],this.target_creature.total_num_pts):this.PoseCreature(this.active_blend_animation_names[a],this.blend_render_pts[a])}for(var c=0;c<3*this.target_creature.total_num_pts;c++){var d=c,e=this.blend_render_pts[0][c],f=this.blend_render_pts[1][c];this.target_creature.render_pts.set(d,(1-blending_factor)*e+blending_factor*f)}}else{var b=this.animations[this.active_animation_name];b.cache_pts.length>0?b.poseFromCachePts(this.getRunTime(),this.target_creature.render_pts,this.target_creature.total_num_pts):this.PoseCreature(this.active_animation_name,this.target_creature.render_pts)}},CreatureManager.prototype.SetTimeScale=function(a){this.time_scale=a},CreatureManager.prototype.SetBlending=function(a){if(this.do_blending=a,this.do_blending){if(0==this.blend_render_pts[0].length){for(var b=[],c=0;c<3*target_creature.total_num_pts;c++)b.push(0);this.blend_render_pts.set(0,b)}if(0==this.blend_render_pts[1].length){for(var b=[],c=0;c<3*this.target_creature.total_num_pts;c++)b.push(0);this.blend_render_pts[1]=b}}},CreatureManager.prototype.SetBlendingAnimations=function(a,b){this.active_blend_animation_names[0]=a,this.active_blend_animation_names[1]=b},CreatureManager.prototype.SetBlendingFactor=function(a){this.blending_factor=a},CreatureManager.prototype.IsContactBone=function(a,b){var c=this.target_creature.render_composition.getRootBone();return this.ProcessContactBone(a,b,c)},CreatureManager.prototype.PoseCreature=function(a,b){var c=this.animations[a],d=c.bones_cache,e=c.displacement_cache,f=c.uv_warp_cache,g=this.target_creature.render_composition,h=g.getBonesMap(),i=g.getRegionsMap();d.retrieveValuesAtTime(this.getRunTime(),h),null!=this.bones_override_callback&&this.bones_override_callback(h),e.retrieveValuesAtTime(this.getRunTime(),i),f.retrieveValuesAtTime(this.getRunTime(),i);var j=g.getRegions(),k=g.getBonesMap();g.updateAllTransforms(!1);for(var l=0,m=j.length;m>l;l++){var n=j[l],o=n.getStartPtIndex();n.poseFinalPts(b,3*o,k);for(var p=3*n.getStartPtIndex(),q=3*n.getEndPtIndex(),r=p;q>=r;r+=3)b[r+2]=.001*-l}}; +//# sourceMappingURL=creature.map \ No newline at end of file diff --git a/build/custom/p2.min.js b/build/custom/p2.min.js index a1e028c40..9a2a670ff 100644 --- a/build/custom/p2.min.js +++ b/build/custom/p2.min.js @@ -1,4 +1,4 @@ -/* Phaser v2.6.0 P2.JS Build - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.6.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)},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, diff --git a/build/custom/phaser-arcade-physics.js b/build/custom/phaser-arcade-physics.js index c1b21cecd..7ca2c6378 100644 --- a/build/custom/phaser-arcade-physics.js +++ b/build/custom/phaser-arcade-physics.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.6.0 "Fal Moran" - Built: Fri Jul 08 2016 15:53:13 +* v2.6.1 "Caemlyn" - Built: Mon Jul 11 2016 09:59:57 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -9043,7 +9043,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.6.0', + VERSION: '2.6.1', /** * An array of Phaser game instances. @@ -71592,7 +71592,7 @@ Phaser.Physics.Arcade.prototype = { if (this.skipQuadTree || sprite.body.skipQuadTree) { - var bounds; + var bounds = {}; for (var i = 0; i < group.hash.length; i++) { @@ -71705,7 +71705,7 @@ Phaser.Physics.Arcade.prototype = { for (var i = 0; i < group.hash.length; i++) { - var bounds1; + var bounds1 = {}; var object1 = group.hash[i]; // Skip duff entries - we can't check a non-existent sprite or one with no body @@ -71719,7 +71719,7 @@ Phaser.Physics.Arcade.prototype = { for (var j = i + 1; j < group.hash.length; j++) { - var bounds2; + var bounds2 = {}; var object2 = group.hash[j]; // Skip duff entries - we can't check a non-existent sprite or one with no body diff --git a/build/custom/phaser-arcade-physics.map b/build/custom/phaser-arcade-physics.map index 755d7d435..738b3633e 100644 --- a/build/custom/phaser-arcade-physics.map +++ b/build/custom/phaser-arcade-physics.map @@ -1 +1 @@ -{"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 +{"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 138ca25cd..a35ad1419 100644 --- a/build/custom/phaser-arcade-physics.min.js +++ b/build/custom/phaser-arcade-physics.min.js @@ -1,8 +1,8 @@ -/* Phaser v2.6.0 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.6.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.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",{ +b.CanvasRenderer=function(a){this.game=a,b.defaultRenderer||(b.defaultRenderer=this),this.type=b.CANVAS_RENDERER,this.resolution=a.resolution,this.clearBeforeRender=a.clearBeforeRender,this.transparent=a.transparent,this.autoResize=!1,this.width=a.width*this.resolution,this.height=a.height*this.resolution,this.view=a.canvas,this.context=this.view.getContext("2d",{alpha:this.transparent}),this.refresh=!0,this.count=0,this.maskManager=new b.CanvasMaskManager,this.renderSession={context:this.context,maskManager:this.maskManager,scaleMode:null,smoothProperty:Phaser.Canvas.getSmoothingPrefix(this.context),roundPixels:!1},this.mapBlendModes(),this.resize(this.width,this.height)},b.CanvasRenderer.prototype.constructor=b.CanvasRenderer,b.CanvasRenderer.prototype.render=function(a){this.context.setTransform(1,0,0,1,0,0),this.context.globalAlpha=1,this.renderSession.currentBlendMode=0,this.renderSession.shakeX=this.game.camera._shake.x,this.renderSession.shakeY=this.game.camera._shake.y,this.context.globalCompositeOperation="source-over",navigator.isCocoonJS&&this.view.screencanvas&&(this.context.fillStyle="black",this.context.clear()),this.clearBeforeRender&&(this.transparent?this.context.clearRect(0,0,this.width,this.height):(this.context.fillStyle=a._bgColor.rgba,this.context.fillRect(0,0,this.width,this.height))),this.renderDisplayObject(a)},b.CanvasRenderer.prototype.destroy=function(a){void 0===a&&(a=!0),a&&this.view.parent&&this.view.parent.removeChild(this.view),this.view=null,this.context=null,this.maskManager=null,this.renderSession=null},b.CanvasRenderer.prototype.resize=function(a,c){this.width=a*this.resolution,this.height=c*this.resolution,this.view.width=this.width,this.view.height=this.height,this.autoResize&&(this.view.style.width=this.width/this.resolution+"px",this.view.style.height=this.height/this.resolution+"px"),this.renderSession.smoothProperty&&(this.context[this.renderSession.smoothProperty]=this.renderSession.scaleMode===b.scaleModes.LINEAR)},b.CanvasRenderer.prototype.renderDisplayObject=function(a,b,c){this.renderSession.context=b||this.context,this.renderSession.resolution=this.resolution,a._renderCanvas(this.renderSession,c)},b.CanvasRenderer.prototype.mapBlendModes=function(){if(!b.blendModesCanvas){var a=[],c=b.blendModes,d=b.canUseNewCanvasBlendModes();a[c.NORMAL]="source-over",a[c.ADD]="lighter",a[c.MULTIPLY]=d?"multiply":"source-over",a[c.SCREEN]=d?"screen":"source-over",a[c.OVERLAY]=d?"overlay":"source-over",a[c.DARKEN]=d?"darken":"source-over",a[c.LIGHTEN]=d?"lighten":"source-over",a[c.COLOR_DODGE]=d?"color-dodge":"source-over",a[c.COLOR_BURN]=d?"color-burn":"source-over",a[c.HARD_LIGHT]=d?"hard-light":"source-over",a[c.SOFT_LIGHT]=d?"soft-light":"source-over",a[c.DIFFERENCE]=d?"difference":"source-over",a[c.EXCLUSION]=d?"exclusion":"source-over",a[c.HUE]=d?"hue":"source-over",a[c.SATURATION]=d?"saturation":"source-over",a[c.COLOR]=d?"color":"source-over",a[c.LUMINOSITY]=d?"luminosity":"source-over",b.blendModesCanvas=a}},b.BaseTexture=function(a,c){this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this.premultipliedAlpha=!0,this._glTextures=[],this.mipmap=!1,this._dirty=[!0,!0,!0,!0],a&&((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height&&(this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty()),this.skipRender=!1,this._powerOf2=!1)},b.BaseTexture.prototype.constructor=b.BaseTexture,b.BaseTexture.prototype.forceLoaded=function(a,b){this.hasLoaded=!0,this.width=a,this.height=b,this.dirty()},b.BaseTexture.prototype.destroy=function(){this.source&&b.CanvasPool.removeByCanvas(this.source),this.source=null,this.unloadFromGPU()},b.BaseTexture.prototype.updateSourceImage=function(a){console.warn("PIXI.BaseTexture.updateSourceImage is deprecated. Use Phaser.Sprite.loadTexture instead.")},b.BaseTexture.prototype.dirty=function(){for(var a=0;a=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.1",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._pollCounter=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); +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 5835a4a38..2a6f40bb7 100644 --- a/build/custom/phaser-minimum.js +++ b/build/custom/phaser-minimum.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.6.0 "Fal Moran" - Built: Fri Jul 08 2016 15:53:23 +* v2.6.1 "Caemlyn" - Built: Mon Jul 11 2016 10:00:07 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -7843,7 +7843,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.6.0', + VERSION: '2.6.1', /** * An array of Phaser game instances. diff --git a/build/custom/phaser-minimum.min.js b/build/custom/phaser-minimum.min.js index 68f7623d9..09e6b768b 100644 --- a/build/custom/phaser-minimum.min.js +++ b/build/custom/phaser-minimum.min.js @@ -1,8 +1,8 @@ -/* Phaser v2.6.0 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.6.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.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; +b.CanvasRenderer=function(a){this.game=a,b.defaultRenderer||(b.defaultRenderer=this),this.type=b.CANVAS_RENDERER,this.resolution=a.resolution,this.clearBeforeRender=a.clearBeforeRender,this.transparent=a.transparent,this.autoResize=!1,this.width=a.width*this.resolution,this.height=a.height*this.resolution,this.view=a.canvas,this.context=this.view.getContext("2d",{alpha:this.transparent}),this.refresh=!0,this.count=0,this.maskManager=new b.CanvasMaskManager,this.renderSession={context:this.context,maskManager:this.maskManager,scaleMode:null,smoothProperty:Phaser.Canvas.getSmoothingPrefix(this.context),roundPixels:!1},this.mapBlendModes(),this.resize(this.width,this.height)},b.CanvasRenderer.prototype.constructor=b.CanvasRenderer,b.CanvasRenderer.prototype.render=function(a){this.context.setTransform(1,0,0,1,0,0),this.context.globalAlpha=1,this.renderSession.currentBlendMode=0,this.renderSession.shakeX=this.game.camera._shake.x,this.renderSession.shakeY=this.game.camera._shake.y,this.context.globalCompositeOperation="source-over",navigator.isCocoonJS&&this.view.screencanvas&&(this.context.fillStyle="black",this.context.clear()),this.clearBeforeRender&&(this.transparent?this.context.clearRect(0,0,this.width,this.height):(this.context.fillStyle=a._bgColor.rgba,this.context.fillRect(0,0,this.width,this.height))),this.renderDisplayObject(a)},b.CanvasRenderer.prototype.destroy=function(a){void 0===a&&(a=!0),a&&this.view.parent&&this.view.parent.removeChild(this.view),this.view=null,this.context=null,this.maskManager=null,this.renderSession=null},b.CanvasRenderer.prototype.resize=function(a,c){this.width=a*this.resolution,this.height=c*this.resolution,this.view.width=this.width,this.view.height=this.height,this.autoResize&&(this.view.style.width=this.width/this.resolution+"px",this.view.style.height=this.height/this.resolution+"px"),this.renderSession.smoothProperty&&(this.context[this.renderSession.smoothProperty]=this.renderSession.scaleMode===b.scaleModes.LINEAR)},b.CanvasRenderer.prototype.renderDisplayObject=function(a,b,c){this.renderSession.context=b||this.context,this.renderSession.resolution=this.resolution,a._renderCanvas(this.renderSession,c)},b.CanvasRenderer.prototype.mapBlendModes=function(){if(!b.blendModesCanvas){var a=[],c=b.blendModes,d=b.canUseNewCanvasBlendModes();a[c.NORMAL]="source-over",a[c.ADD]="lighter",a[c.MULTIPLY]=d?"multiply":"source-over",a[c.SCREEN]=d?"screen":"source-over",a[c.OVERLAY]=d?"overlay":"source-over",a[c.DARKEN]=d?"darken":"source-over",a[c.LIGHTEN]=d?"lighten":"source-over",a[c.COLOR_DODGE]=d?"color-dodge":"source-over",a[c.COLOR_BURN]=d?"color-burn":"source-over",a[c.HARD_LIGHT]=d?"hard-light":"source-over",a[c.SOFT_LIGHT]=d?"soft-light":"source-over",a[c.DIFFERENCE]=d?"difference":"source-over",a[c.EXCLUSION]=d?"exclusion":"source-over",a[c.HUE]=d?"hue":"source-over",a[c.SATURATION]=d?"saturation":"source-over",a[c.COLOR]=d?"color":"source-over",a[c.LUMINOSITY]=d?"luminosity":"source-over",b.blendModesCanvas=a}},b.BaseTexture=function(a,c){this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this.premultipliedAlpha=!0,this._glTextures=[],this.mipmap=!1,this._dirty=[!0,!0,!0,!0],a&&((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height&&(this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty()),this.skipRender=!1,this._powerOf2=!1)},b.BaseTexture.prototype.constructor=b.BaseTexture,b.BaseTexture.prototype.forceLoaded=function(a,b){this.hasLoaded=!0,this.width=a,this.height=b,this.dirty()},b.BaseTexture.prototype.destroy=function(){this.source&&b.CanvasPool.removeByCanvas(this.source),this.source=null,this.unloadFromGPU()},b.BaseTexture.prototype.updateSourceImage=function(a){console.warn("PIXI.BaseTexture.updateSourceImage is deprecated. Use Phaser.Sprite.loadTexture instead.")},b.BaseTexture.prototype.dirty=function(){for(var a=0;a=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.1",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;f=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",{ +b.CanvasRenderer=function(a){this.game=a,b.defaultRenderer||(b.defaultRenderer=this),this.type=b.CANVAS_RENDERER,this.resolution=a.resolution,this.clearBeforeRender=a.clearBeforeRender,this.transparent=a.transparent,this.autoResize=!1,this.width=a.width*this.resolution,this.height=a.height*this.resolution,this.view=a.canvas,this.context=this.view.getContext("2d",{alpha:this.transparent}),this.refresh=!0,this.count=0,this.maskManager=new b.CanvasMaskManager,this.renderSession={context:this.context,maskManager:this.maskManager,scaleMode:null,smoothProperty:Phaser.Canvas.getSmoothingPrefix(this.context),roundPixels:!1},this.mapBlendModes(),this.resize(this.width,this.height)},b.CanvasRenderer.prototype.constructor=b.CanvasRenderer,b.CanvasRenderer.prototype.render=function(a){this.context.setTransform(1,0,0,1,0,0),this.context.globalAlpha=1,this.renderSession.currentBlendMode=0,this.renderSession.shakeX=this.game.camera._shake.x,this.renderSession.shakeY=this.game.camera._shake.y,this.context.globalCompositeOperation="source-over",navigator.isCocoonJS&&this.view.screencanvas&&(this.context.fillStyle="black",this.context.clear()),this.clearBeforeRender&&(this.transparent?this.context.clearRect(0,0,this.width,this.height):(this.context.fillStyle=a._bgColor.rgba,this.context.fillRect(0,0,this.width,this.height))),this.renderDisplayObject(a)},b.CanvasRenderer.prototype.destroy=function(a){void 0===a&&(a=!0),a&&this.view.parent&&this.view.parent.removeChild(this.view),this.view=null,this.context=null,this.maskManager=null,this.renderSession=null},b.CanvasRenderer.prototype.resize=function(a,c){this.width=a*this.resolution,this.height=c*this.resolution,this.view.width=this.width,this.view.height=this.height,this.autoResize&&(this.view.style.width=this.width/this.resolution+"px",this.view.style.height=this.height/this.resolution+"px"),this.renderSession.smoothProperty&&(this.context[this.renderSession.smoothProperty]=this.renderSession.scaleMode===b.scaleModes.LINEAR)},b.CanvasRenderer.prototype.renderDisplayObject=function(a,b,c){this.renderSession.context=b||this.context,this.renderSession.resolution=this.resolution,a._renderCanvas(this.renderSession,c)},b.CanvasRenderer.prototype.mapBlendModes=function(){if(!b.blendModesCanvas){var a=[],c=b.blendModes,d=b.canUseNewCanvasBlendModes();a[c.NORMAL]="source-over",a[c.ADD]="lighter",a[c.MULTIPLY]=d?"multiply":"source-over",a[c.SCREEN]=d?"screen":"source-over",a[c.OVERLAY]=d?"overlay":"source-over",a[c.DARKEN]=d?"darken":"source-over",a[c.LIGHTEN]=d?"lighten":"source-over",a[c.COLOR_DODGE]=d?"color-dodge":"source-over",a[c.COLOR_BURN]=d?"color-burn":"source-over",a[c.HARD_LIGHT]=d?"hard-light":"source-over",a[c.SOFT_LIGHT]=d?"soft-light":"source-over",a[c.DIFFERENCE]=d?"difference":"source-over",a[c.EXCLUSION]=d?"exclusion":"source-over",a[c.HUE]=d?"hue":"source-over",a[c.SATURATION]=d?"saturation":"source-over",a[c.COLOR]=d?"color":"source-over",a[c.LUMINOSITY]=d?"luminosity":"source-over",b.blendModesCanvas=a}},b.BaseTexture=function(a,c){this.resolution=1,this.width=100,this.height=100,this.scaleMode=c||b.scaleModes.DEFAULT,this.hasLoaded=!1,this.source=a,this.premultipliedAlpha=!0,this._glTextures=[],this.mipmap=!1,this._dirty=[!0,!0,!0,!0],a&&((this.source.complete||this.source.getContext)&&this.source.width&&this.source.height&&(this.hasLoaded=!0,this.width=this.source.naturalWidth||this.source.width,this.height=this.source.naturalHeight||this.source.height,this.dirty()),this.skipRender=!1,this._powerOf2=!1)},b.BaseTexture.prototype.constructor=b.BaseTexture,b.BaseTexture.prototype.forceLoaded=function(a,b){this.hasLoaded=!0,this.width=a,this.height=b,this.dirty()},b.BaseTexture.prototype.destroy=function(){this.source&&b.CanvasPool.removeByCanvas(this.source),this.source=null,this.unloadFromGPU()},b.BaseTexture.prototype.updateSourceImage=function(a){console.warn("PIXI.BaseTexture.updateSourceImage is deprecated. Use Phaser.Sprite.loadTexture instead.")},b.BaseTexture.prototype.dirty=function(){for(var a=0;a=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.1",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._pollCountera?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, +(function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.6.1",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), @@ -13,7 +13,7 @@ this.s1=this.hash(this.s0),this.s2=this.hash(this.s1),this.c=1,a)for(var b=0;b=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, +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;k=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 && s<=1 && t>=0 && t<=1); +}; + + +},{"./Scalar":4}],2:[function(_dereq_,module,exports){ +module.exports = Point; + +/** + * Point related functions + * @class Point + */ +function Point(){}; + +/** + * Get the area of a triangle spanned by the three given points. Note that the area will be negative if the points are not given in counter-clockwise order. + * @static + * @method area + * @param {Array} a + * @param {Array} b + * @param {Array} c + * @return {Number} + */ +Point.area = function(a,b,c){ + return (((b[0] - a[0])*(c[1] - a[1]))-((c[0] - a[0])*(b[1] - a[1]))); +}; + +Point.left = function(a,b,c){ + return Point.area(a,b,c) > 0; +}; + +Point.leftOn = function(a,b,c) { + return Point.area(a, b, c) >= 0; +}; + +Point.right = function(a,b,c) { + return Point.area(a, b, c) < 0; +}; + +Point.rightOn = function(a,b,c) { + return Point.area(a, b, c) <= 0; +}; + +var tmpPoint1 = [], + tmpPoint2 = []; + +/** + * Check if three points are collinear + * @method collinear + * @param {Array} a + * @param {Array} b + * @param {Array} c + * @param {Number} [thresholdAngle=0] Threshold angle to use when comparing the vectors. The function will return true if the angle between the resulting vectors is less than this value. Use zero for max precision. + * @return {Boolean} + */ +Point.collinear = function(a,b,c,thresholdAngle) { + if(!thresholdAngle) + return Point.area(a, b, c) == 0; + else { + var ab = tmpPoint1, + bc = tmpPoint2; + + ab[0] = b[0]-a[0]; + ab[1] = b[1]-a[1]; + bc[0] = c[0]-b[0]; + bc[1] = c[1]-b[1]; + + var dot = ab[0]*bc[0] + ab[1]*bc[1], + magA = Math.sqrt(ab[0]*ab[0] + ab[1]*ab[1]), + magB = Math.sqrt(bc[0]*bc[0] + bc[1]*bc[1]), + angle = Math.acos(dot/(magA*magB)); + return angle < thresholdAngle; + } +}; + +Point.sqdist = function(a,b){ + var dx = b[0] - a[0]; + var dy = b[1] - a[1]; + return dx * dx + dy * dy; +}; + +},{}],3:[function(_dereq_,module,exports){ +var Line = _dereq_("./Line") +, Point = _dereq_("./Point") +, Scalar = _dereq_("./Scalar") + +module.exports = Polygon; + +/** + * Polygon class. + * @class Polygon + * @constructor + */ +function Polygon(){ + + /** + * Vertices that this polygon consists of. An array of array of numbers, example: [[0,0],[1,0],..] + * @property vertices + * @type {Array} + */ + this.vertices = []; +} + +/** + * Get a vertex at position i. It does not matter if i is out of bounds, this function will just cycle. + * @method at + * @param {Number} i + * @return {Array} + */ +Polygon.prototype.at = function(i){ + var v = this.vertices, + s = v.length; + return v[i < 0 ? i % s + s : i % s]; +}; + +/** + * Get first vertex + * @method first + * @return {Array} + */ +Polygon.prototype.first = function(){ + return this.vertices[0]; +}; + +/** + * Get last vertex + * @method last + * @return {Array} + */ +Polygon.prototype.last = function(){ + return this.vertices[this.vertices.length-1]; +}; + +/** + * Clear the polygon data + * @method clear + * @return {Array} + */ +Polygon.prototype.clear = function(){ + this.vertices.length = 0; +}; + +/** + * Append points "from" to "to"-1 from an other polygon "poly" onto this one. + * @method append + * @param {Polygon} poly The polygon to get points from. + * @param {Number} from The vertex index in "poly". + * @param {Number} to The end vertex index in "poly". Note that this vertex is NOT included when appending. + * @return {Array} + */ +Polygon.prototype.append = function(poly,from,to){ + if(typeof(from) == "undefined") throw new Error("From is not given!"); + if(typeof(to) == "undefined") throw new Error("To is not given!"); + + if(to-1 < from) throw new Error("lol1"); + if(to > poly.vertices.length) throw new Error("lol2"); + if(from < 0) throw new Error("lol3"); + + for(var i=from; i v[br][0])) { + br = i; + } + } + + // reverse poly if clockwise + if (!Point.left(this.at(br - 1), this.at(br), this.at(br + 1))) { + this.reverse(); + } +}; + +/** + * Reverse the vertices in the polygon + * @method reverse + */ +Polygon.prototype.reverse = function(){ + var tmp = []; + for(var i=0, N=this.vertices.length; i!==N; i++){ + tmp.push(this.vertices.pop()); + } + this.vertices = tmp; +}; + +/** + * Check if a point in the polygon is a reflex point + * @method isReflex + * @param {Number} i + * @return {Boolean} + */ +Polygon.prototype.isReflex = function(i){ + return Point.right(this.at(i - 1), this.at(i), this.at(i + 1)); +}; + +var tmpLine1=[], + tmpLine2=[]; + +/** + * Check if two vertices in the polygon can see each other + * @method canSee + * @param {Number} a Vertex index 1 + * @param {Number} b Vertex index 2 + * @return {Boolean} + */ +Polygon.prototype.canSee = function(a,b) { + var p, dist, l1=tmpLine1, l2=tmpLine2; + + if (Point.leftOn(this.at(a + 1), this.at(a), this.at(b)) && Point.rightOn(this.at(a - 1), this.at(a), this.at(b))) { + return false; + } + dist = Point.sqdist(this.at(a), this.at(b)); + for (var i = 0; i !== this.vertices.length; ++i) { // for each edge + if ((i + 1) % this.vertices.length === a || i === a) // ignore incident edges + continue; + if (Point.leftOn(this.at(a), this.at(b), this.at(i + 1)) && Point.rightOn(this.at(a), this.at(b), this.at(i))) { // if diag intersects an edge + l1[0] = this.at(a); + l1[1] = this.at(b); + l2[0] = this.at(i); + l2[1] = this.at(i + 1); + p = Line.lineInt(l1,l2); + if (Point.sqdist(this.at(a), p) < dist) { // if edge is blocking visibility to b + return false; + } + } + } + + return true; +}; + +/** + * Copy the polygon from vertex i to vertex j. + * @method copy + * @param {Number} i + * @param {Number} j + * @param {Polygon} [targetPoly] Optional target polygon to save in. + * @return {Polygon} The resulting copy. + */ +Polygon.prototype.copy = function(i,j,targetPoly){ + var p = targetPoly || new Polygon(); + p.clear(); + if (i < j) { + // Insert all vertices from i to j + for(var k=i; k<=j; k++) + p.vertices.push(this.vertices[k]); + + } else { + + // Insert vertices 0 to j + for(var k=0; k<=j; k++) + p.vertices.push(this.vertices[k]); + + // Insert vertices i to end + for(var k=i; k 0) + return this.slice(edges); + else + return [this]; +}; + +/** + * Slices the polygon given one or more cut edges. If given one, this function will return two polygons (false on failure). If many, an array of polygons. + * @method slice + * @param {Array} cutEdges A list of edges, as returned by .getCutEdges() + * @return {Array} + */ +Polygon.prototype.slice = function(cutEdges){ + if(cutEdges.length == 0) return [this]; + if(cutEdges instanceof Array && cutEdges.length && cutEdges[0] instanceof Array && cutEdges[0].length==2 && cutEdges[0][0] instanceof Array){ + + var polys = [this]; + + for(var i=0; i maxlevel){ + console.warn("quickDecomp: max level ("+maxlevel+") reached."); + return result; + } + + for (var i = 0; i < this.vertices.length; ++i) { + if (poly.isReflex(i)) { + reflexVertices.push(poly.vertices[i]); + upperDist = lowerDist = Number.MAX_VALUE; + + + for (var j = 0; j < this.vertices.length; ++j) { + if (Point.left(poly.at(i - 1), poly.at(i), poly.at(j)) + && Point.rightOn(poly.at(i - 1), poly.at(i), poly.at(j - 1))) { // if line intersects with an edge + p = getIntersectionPoint(poly.at(i - 1), poly.at(i), poly.at(j), poly.at(j - 1)); // find the point of intersection + if (Point.right(poly.at(i + 1), poly.at(i), p)) { // make sure it's inside the poly + d = Point.sqdist(poly.vertices[i], p); + if (d < lowerDist) { // keep only the closest intersection + lowerDist = d; + lowerInt = p; + lowerIndex = j; + } + } + } + if (Point.left(poly.at(i + 1), poly.at(i), poly.at(j + 1)) + && Point.rightOn(poly.at(i + 1), poly.at(i), poly.at(j))) { + p = getIntersectionPoint(poly.at(i + 1), poly.at(i), poly.at(j), poly.at(j + 1)); + if (Point.left(poly.at(i - 1), poly.at(i), p)) { + d = Point.sqdist(poly.vertices[i], p); + if (d < upperDist) { + upperDist = d; + upperInt = p; + upperIndex = j; + } + } + } + } + + // if there are no vertices to connect to, choose a point in the middle + if (lowerIndex == (upperIndex + 1) % this.vertices.length) { + //console.log("Case 1: Vertex("+i+"), lowerIndex("+lowerIndex+"), upperIndex("+upperIndex+"), poly.size("+this.vertices.length+")"); + p[0] = (lowerInt[0] + upperInt[0]) / 2; + p[1] = (lowerInt[1] + upperInt[1]) / 2; + steinerPoints.push(p); + + if (i < upperIndex) { + //lowerPoly.insert(lowerPoly.end(), poly.begin() + i, poly.begin() + upperIndex + 1); + lowerPoly.append(poly, i, upperIndex+1); + lowerPoly.vertices.push(p); + upperPoly.vertices.push(p); + if (lowerIndex != 0){ + //upperPoly.insert(upperPoly.end(), poly.begin() + lowerIndex, poly.end()); + upperPoly.append(poly,lowerIndex,poly.vertices.length); + } + //upperPoly.insert(upperPoly.end(), poly.begin(), poly.begin() + i + 1); + upperPoly.append(poly,0,i+1); + } else { + if (i != 0){ + //lowerPoly.insert(lowerPoly.end(), poly.begin() + i, poly.end()); + lowerPoly.append(poly,i,poly.vertices.length); + } + //lowerPoly.insert(lowerPoly.end(), poly.begin(), poly.begin() + upperIndex + 1); + lowerPoly.append(poly,0,upperIndex+1); + lowerPoly.vertices.push(p); + upperPoly.vertices.push(p); + //upperPoly.insert(upperPoly.end(), poly.begin() + lowerIndex, poly.begin() + i + 1); + upperPoly.append(poly,lowerIndex,i+1); + } + } else { + // connect to the closest point within the triangle + //console.log("Case 2: Vertex("+i+"), closestIndex("+closestIndex+"), poly.size("+this.vertices.length+")\n"); + + if (lowerIndex > upperIndex) { + upperIndex += this.vertices.length; + } + closestDist = Number.MAX_VALUE; + + if(upperIndex < lowerIndex){ + return result; + } + + for (var j = lowerIndex; j <= upperIndex; ++j) { + if (Point.leftOn(poly.at(i - 1), poly.at(i), poly.at(j)) + && Point.rightOn(poly.at(i + 1), poly.at(i), poly.at(j))) { + d = Point.sqdist(poly.at(i), poly.at(j)); + if (d < closestDist) { + closestDist = d; + closestIndex = j % this.vertices.length; + } + } + } + + if (i < closestIndex) { + lowerPoly.append(poly,i,closestIndex+1); + if (closestIndex != 0){ + upperPoly.append(poly,closestIndex,v.length); + } + upperPoly.append(poly,0,i+1); + } else { + if (i != 0){ + lowerPoly.append(poly,i,v.length); + } + lowerPoly.append(poly,0,closestIndex+1); + upperPoly.append(poly,closestIndex,i+1); + } + } + + // solve smallest poly first + if (lowerPoly.vertices.length < upperPoly.vertices.length) { + lowerPoly.quickDecomp(result,reflexVertices,steinerPoints,delta,maxlevel,level); + upperPoly.quickDecomp(result,reflexVertices,steinerPoints,delta,maxlevel,level); + } else { + upperPoly.quickDecomp(result,reflexVertices,steinerPoints,delta,maxlevel,level); + lowerPoly.quickDecomp(result,reflexVertices,steinerPoints,delta,maxlevel,level); + } + + return result; + } + } + result.push(this); + + return result; +}; + +/** + * Remove collinear points in the polygon. + * @method removeCollinearPoints + * @param {Number} [precision] The threshold angle to use when determining whether two edges are collinear. Use zero for finest precision. + * @return {Number} The number of points removed + */ +Polygon.prototype.removeCollinearPoints = function(precision){ + var num = 0; + for(var i=this.vertices.length-1; this.vertices.length>3 && i>=0; --i){ + if(Point.collinear(this.at(i-1),this.at(i),this.at(i+1),precision)){ + // Remove the middle point + this.vertices.splice(i%this.vertices.length,1); + i--; // Jump one point forward. Otherwise we may get a chain removal + num++; + } + } + return num; +}; + +},{"./Line":1,"./Point":2,"./Scalar":4}],4:[function(_dereq_,module,exports){ +module.exports = Scalar; + +/** + * Scalar functions + * @class Scalar + */ +function Scalar(){} + +/** + * Check if two scalars are equal + * @static + * @method eq + * @param {Number} a + * @param {Number} b + * @param {Number} [precision] + * @return {Boolean} + */ +Scalar.eq = function(a,b,precision){ + precision = precision || 0; + return Math.abs(a-b) < precision; +}; + +},{}],5:[function(_dereq_,module,exports){ +module.exports = { + Polygon : _dereq_("./Polygon"), + Point : _dereq_("./Point"), +}; + +},{"./Point":2,"./Polygon":3}],6:[function(_dereq_,module,exports){ +module.exports={ + "name": "p2", + "version": "0.7.0", + "description": "A JavaScript 2D physics engine.", + "author": "Stefan Hedman (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(_dereq_,module,exports){ +var vec2 = _dereq_('../math/vec2') +, Utils = _dereq_('../utils/Utils'); + +module.exports = AABB; + +/** + * Axis aligned bounding box class. + * @class AABB + * @constructor + * @param {Object} [options] + * @param {Array} [options.upperBound] + * @param {Array} [options.lowerBound] + */ +function AABB(options){ + + /** + * The lower bound of the bounding box. + * @property lowerBound + * @type {Array} + */ + this.lowerBound = vec2.create(); + if(options && options.lowerBound){ + vec2.copy(this.lowerBound, options.lowerBound); + } + + /** + * The upper bound of the bounding box. + * @property upperBound + * @type {Array} + */ + this.upperBound = vec2.create(); + if(options && options.upperBound){ + vec2.copy(this.upperBound, options.upperBound); + } +} + +var tmp = vec2.create(); + +/** + * Set the AABB bounds from a set of points, transformed by the given position and angle. + * @method setFromPoints + * @param {Array} points An array of vec2's. + * @param {Array} position + * @param {number} angle + * @param {number} skinSize Some margin to be added to the AABB. + */ +AABB.prototype.setFromPoints = function(points, position, angle, skinSize){ + var l = this.lowerBound, + u = this.upperBound; + + if(typeof(angle) !== "number"){ + angle = 0; + } + + // Set to the first point + if(angle !== 0){ + vec2.rotate(l, points[0], angle); + } else { + vec2.copy(l, points[0]); + } + vec2.copy(u, l); + + // Compute cosines and sines just once + var cosAngle = Math.cos(angle), + sinAngle = Math.sin(angle); + for(var i = 1; i u[j]){ + u[j] = p[j]; + } + if(p[j] < l[j]){ + l[j] = p[j]; + } + } + } + + // Add offset + if(position){ + vec2.add(this.lowerBound, this.lowerBound, position); + vec2.add(this.upperBound, this.upperBound, position); + } + + if(skinSize){ + this.lowerBound[0] -= skinSize; + this.lowerBound[1] -= skinSize; + this.upperBound[0] += skinSize; + this.upperBound[1] += skinSize; + } +}; + +/** + * Copy bounds from an AABB to this AABB + * @method copy + * @param {AABB} aabb + */ +AABB.prototype.copy = function(aabb){ + vec2.copy(this.lowerBound, aabb.lowerBound); + vec2.copy(this.upperBound, aabb.upperBound); +}; + +/** + * Extend this AABB so that it covers the given AABB too. + * @method extend + * @param {AABB} aabb + */ +AABB.prototype.extend = function(aabb){ + // Loop over x and y + var i = 2; + while(i--){ + // Extend lower bound + var l = aabb.lowerBound[i]; + if(this.lowerBound[i] > l){ + this.lowerBound[i] = l; + } + + // Upper + var u = aabb.upperBound[i]; + if(this.upperBound[i] < u){ + this.upperBound[i] = u; + } + } +}; + +/** + * Returns true if the given AABB overlaps this AABB. + * @method overlaps + * @param {AABB} aabb + * @return {Boolean} + */ +AABB.prototype.overlaps = function(aabb){ + var l1 = this.lowerBound, + u1 = this.upperBound, + l2 = aabb.lowerBound, + u2 = aabb.upperBound; + + // l2 u2 + // |---------| + // |--------| + // l1 u1 + + return ((l2[0] <= u1[0] && u1[0] <= u2[0]) || (l1[0] <= u2[0] && u2[0] <= u1[0])) && + ((l2[1] <= u1[1] && u1[1] <= u2[1]) || (l1[1] <= u2[1] && u2[1] <= u1[1])); +}; + +/** + * @method containsPoint + * @param {Array} point + * @return {boolean} + */ +AABB.prototype.containsPoint = function(point){ + var l = this.lowerBound, + u = this.upperBound; + return l[0] <= point[0] && point[0] <= u[0] && l[1] <= point[1] && point[1] <= u[1]; +}; + +/** + * Check if the AABB is hit by a ray. + * @method overlapsRay + * @param {Ray} ray + * @return {number} -1 if no hit, a number between 0 and 1 if hit. + */ +AABB.prototype.overlapsRay = function(ray){ + var t = 0; + + // ray.direction is unit direction vector of ray + var dirFracX = 1 / ray.direction[0]; + var dirFracY = 1 / ray.direction[1]; + + // this.lowerBound is the corner of AABB with minimal coordinates - left bottom, rt is maximal corner + var t1 = (this.lowerBound[0] - ray.from[0]) * dirFracX; + var t2 = (this.upperBound[0] - ray.from[0]) * dirFracX; + var t3 = (this.lowerBound[1] - ray.from[1]) * dirFracY; + var t4 = (this.upperBound[1] - ray.from[1]) * dirFracY; + + var tmin = Math.max(Math.max(Math.min(t1, t2), Math.min(t3, t4))); + var tmax = Math.min(Math.min(Math.max(t1, t2), Math.max(t3, t4))); + + // if tmax < 0, ray (line) is intersecting AABB, but whole AABB is behing us + if (tmax < 0){ + //t = tmax; + return -1; + } + + // if tmin > tmax, ray doesn't intersect AABB + if (tmin > tmax){ + //t = tmax; + return -1; + } + + return tmin; +}; +},{"../math/vec2":30,"../utils/Utils":57}],8:[function(_dereq_,module,exports){ +var vec2 = _dereq_('../math/vec2'); +var Body = _dereq_('../objects/Body'); + +module.exports = Broadphase; + +/** + * Base class for broadphase implementations. + * @class Broadphase + * @constructor + */ +function Broadphase(type){ + + this.type = type; + + /** + * The resulting overlapping pairs. Will be filled with results during .getCollisionPairs(). + * @property result + * @type {Array} + */ + this.result = []; + + /** + * The world to search for collision pairs in. To change it, use .setWorld() + * @property world + * @type {World} + * @readOnly + */ + this.world = null; + + /** + * The bounding volume type to use in the broadphase algorithms. Should be set to Broadphase.AABB or Broadphase.BOUNDING_CIRCLE. + * @property {Number} boundingVolumeType + */ + this.boundingVolumeType = Broadphase.AABB; +} + +/** + * Axis aligned bounding box type. + * @static + * @property {Number} AABB + */ +Broadphase.AABB = 1; + +/** + * Bounding circle type. + * @static + * @property {Number} BOUNDING_CIRCLE + */ +Broadphase.BOUNDING_CIRCLE = 2; + +/** + * Set the world that we are searching for collision pairs in. + * @method setWorld + * @param {World} world + */ +Broadphase.prototype.setWorld = function(world){ + this.world = world; +}; + +/** + * Get all potential intersecting body pairs. + * @method getCollisionPairs + * @param {World} world The world to search in. + * @return {Array} An array of the bodies, ordered in pairs. Example: A result of [a,b,c,d] means that the potential pairs are: (a,b), (c,d). + */ +Broadphase.prototype.getCollisionPairs = function(world){}; + +var dist = vec2.create(); + +/** + * Check whether the bounding radius of two bodies overlap. + * @method boundingRadiusCheck + * @param {Body} bodyA + * @param {Body} bodyB + * @return {Boolean} + */ +Broadphase.boundingRadiusCheck = function(bodyA, bodyB){ + vec2.sub(dist, bodyA.position, bodyB.position); + var d2 = vec2.squaredLength(dist), + r = bodyA.boundingRadius + bodyB.boundingRadius; + return d2 <= r*r; +}; + +/** + * Check whether the bounding radius of two bodies overlap. + * @method boundingRadiusCheck + * @param {Body} bodyA + * @param {Body} bodyB + * @return {Boolean} + */ +Broadphase.aabbCheck = function(bodyA, bodyB){ + return bodyA.getAABB().overlaps(bodyB.getAABB()); +}; + +/** + * Check whether the bounding radius of two bodies overlap. + * @method boundingRadiusCheck + * @param {Body} bodyA + * @param {Body} bodyB + * @return {Boolean} + */ +Broadphase.prototype.boundingVolumeCheck = function(bodyA, bodyB){ + var result; + + switch(this.boundingVolumeType){ + case Broadphase.BOUNDING_CIRCLE: + result = Broadphase.boundingRadiusCheck(bodyA,bodyB); + break; + case Broadphase.AABB: + result = Broadphase.aabbCheck(bodyA,bodyB); + break; + default: + throw new Error('Bounding volume type not recognized: '+this.boundingVolumeType); + } + return result; +}; + +/** + * Check whether two bodies are allowed to collide at all. + * @method canCollide + * @param {Body} bodyA + * @param {Body} bodyB + * @return {Boolean} + */ +Broadphase.canCollide = function(bodyA, bodyB){ + var KINEMATIC = Body.KINEMATIC; + var STATIC = Body.STATIC; + + // Cannot collide static bodies + if(bodyA.type === STATIC && bodyB.type === STATIC){ + return false; + } + + // Cannot collide static vs kinematic bodies + if( (bodyA.type === KINEMATIC && bodyB.type === STATIC) || + (bodyA.type === STATIC && bodyB.type === KINEMATIC)){ + return false; + } + + // Cannot collide kinematic vs kinematic + if(bodyA.type === KINEMATIC && bodyB.type === KINEMATIC){ + return false; + } + + // Cannot collide both sleeping bodies + if(bodyA.sleepState === Body.SLEEPING && bodyB.sleepState === Body.SLEEPING){ + return false; + } + + // Cannot collide if one is static and the other is sleeping + if( (bodyA.sleepState === Body.SLEEPING && bodyB.type === STATIC) || + (bodyB.sleepState === Body.SLEEPING && bodyA.type === STATIC)){ + return false; + } + + return true; +}; + +Broadphase.NAIVE = 1; +Broadphase.SAP = 2; + +},{"../math/vec2":30,"../objects/Body":31}],9:[function(_dereq_,module,exports){ +var Circle = _dereq_('../shapes/Circle'), + Plane = _dereq_('../shapes/Plane'), + Shape = _dereq_('../shapes/Shape'), + Particle = _dereq_('../shapes/Particle'), + Broadphase = _dereq_('../collision/Broadphase'), + vec2 = _dereq_('../math/vec2'); + +module.exports = NaiveBroadphase; + +/** + * Naive broadphase implementation. Does N^2 tests. + * + * @class NaiveBroadphase + * @constructor + * @extends Broadphase + */ +function NaiveBroadphase(){ + Broadphase.call(this, Broadphase.NAIVE); +} +NaiveBroadphase.prototype = new Broadphase(); +NaiveBroadphase.prototype.constructor = NaiveBroadphase; + +/** + * Get the colliding pairs + * @method getCollisionPairs + * @param {World} world + * @return {Array} + */ +NaiveBroadphase.prototype.getCollisionPairs = function(world){ + var bodies = world.bodies, + result = this.result; + + result.length = 0; + + for(var i=0, Ncolliding=bodies.length; i!==Ncolliding; i++){ + var bi = bodies[i]; + + for(var j=0; j pos0 && pos < pos1){ + // We got contact! + + if(justTest){ + return true; + } + + var c = this.createContactEquation(circleBody,lineBody,circleShape,lineShape); + + vec2.scale(c.normalA, orthoDist, -1); + vec2.normalize(c.normalA, c.normalA); + + vec2.scale( c.contactPointA, c.normalA, circleRadius); + add(c.contactPointA, c.contactPointA, circleOffset); + sub(c.contactPointA, c.contactPointA, circleBody.position); + + sub(c.contactPointB, projectedPoint, lineOffset); + add(c.contactPointB, c.contactPointB, lineOffset); + sub(c.contactPointB, c.contactPointB, lineBody.position); + + this.contactEquations.push(c); + + if(this.enableFriction){ + this.frictionEquations.push(this.createFrictionFromContact(c)); + } + + return 1; + } + } + + // Add corner + verts[0] = worldVertex0; + verts[1] = worldVertex1; + + for(var i=0; i 0){ + for(var i=0; i Math.pow(r,2)){ + return 0; + } + + if(justTest){ + return true; + } + + var c = this.createContactEquation(bodyA,bodyB,shapeA,shapeB); + sub(c.normalA, offsetB, offsetA); + vec2.normalize(c.normalA,c.normalA); + + vec2.scale( c.contactPointA, c.normalA, radiusA); + vec2.scale( c.contactPointB, c.normalA, -radiusB); + + add(c.contactPointA, c.contactPointA, offsetA); + sub(c.contactPointA, c.contactPointA, bodyA.position); + + add(c.contactPointB, c.contactPointB, offsetB); + sub(c.contactPointB, c.contactPointB, bodyB.position); + + this.contactEquations.push(c); + + if(this.enableFriction){ + this.frictionEquations.push(this.createFrictionFromContact(c)); + } + return 1; +}; + +/** + * Plane/Convex Narrowphase + * @method planeConvex + * @param {Body} planeBody + * @param {Plane} planeShape + * @param {Array} planeOffset + * @param {Number} planeAngle + * @param {Body} convexBody + * @param {Convex} convexShape + * @param {Array} convexOffset + * @param {Number} convexAngle + * @param {Boolean} justTest + */ +Narrowphase.prototype[Shape.PLANE | Shape.CONVEX] = +Narrowphase.prototype[Shape.PLANE | Shape.BOX] = +Narrowphase.prototype.planeConvex = function( + planeBody, + planeShape, + planeOffset, + planeAngle, + convexBody, + convexShape, + convexOffset, + convexAngle, + justTest +){ + var worldVertex = tmp1, + worldNormal = tmp2, + dist = tmp3; + + var numReported = 0; + vec2.rotate(worldNormal, yAxis, planeAngle); + + for(var i=0; i!==convexShape.vertices.length; i++){ + var v = convexShape.vertices[i]; + vec2.rotate(worldVertex, v, convexAngle); + add(worldVertex, worldVertex, convexOffset); + + sub(dist, worldVertex, planeOffset); + + if(dot(dist,worldNormal) <= 0){ + + if(justTest){ + return true; + } + + // Found vertex + numReported++; + + var c = this.createContactEquation(planeBody,convexBody,planeShape,convexShape); + + sub(dist, worldVertex, planeOffset); + + vec2.copy(c.normalA, worldNormal); + + var d = dot(dist, c.normalA); + vec2.scale(dist, c.normalA, d); + + // rj is from convex center to contact + sub(c.contactPointB, worldVertex, convexBody.position); + + + // ri is from plane center to contact + sub( c.contactPointA, worldVertex, dist); + sub( c.contactPointA, c.contactPointA, planeBody.position); + + this.contactEquations.push(c); + + if(!this.enableFrictionReduction){ + if(this.enableFriction){ + this.frictionEquations.push(this.createFrictionFromContact(c)); + } + } + } + } + + if(this.enableFrictionReduction){ + if(this.enableFriction && numReported){ + this.frictionEquations.push(this.createFrictionFromAverage(numReported)); + } + } + + return numReported; +}; + +/** + * Narrowphase for particle vs plane + * @method particlePlane + * @param {Body} particleBody + * @param {Particle} particleShape + * @param {Array} particleOffset + * @param {Number} particleAngle + * @param {Body} planeBody + * @param {Plane} planeShape + * @param {Array} planeOffset + * @param {Number} planeAngle + * @param {Boolean} justTest + */ +Narrowphase.prototype[Shape.PARTICLE | Shape.PLANE] = +Narrowphase.prototype.particlePlane = function( + particleBody, + particleShape, + particleOffset, + particleAngle, + planeBody, + planeShape, + planeOffset, + planeAngle, + justTest +){ + var dist = tmp1, + worldNormal = tmp2; + + planeAngle = planeAngle || 0; + + sub(dist, particleOffset, planeOffset); + vec2.rotate(worldNormal, yAxis, planeAngle); + + var d = dot(dist, worldNormal); + + if(d > 0){ + return 0; + } + if(justTest){ + return true; + } + + var c = this.createContactEquation(planeBody,particleBody,planeShape,particleShape); + + vec2.copy(c.normalA, worldNormal); + vec2.scale( dist, c.normalA, d ); + // dist is now the distance vector in the normal direction + + // ri is the particle position projected down onto the plane, from the plane center + sub( c.contactPointA, particleOffset, dist); + sub( c.contactPointA, c.contactPointA, planeBody.position); + + // rj is from the body center to the particle center + sub( c.contactPointB, particleOffset, particleBody.position ); + + this.contactEquations.push(c); + + if(this.enableFriction){ + this.frictionEquations.push(this.createFrictionFromContact(c)); + } + return 1; +}; + +/** + * Circle/Particle Narrowphase + * @method circleParticle + * @param {Body} circleBody + * @param {Circle} circleShape + * @param {Array} circleOffset + * @param {Number} circleAngle + * @param {Body} particleBody + * @param {Particle} particleShape + * @param {Array} particleOffset + * @param {Number} particleAngle + * @param {Boolean} justTest + */ +Narrowphase.prototype[Shape.CIRCLE | Shape.PARTICLE] = +Narrowphase.prototype.circleParticle = function( + circleBody, + circleShape, + circleOffset, + circleAngle, + particleBody, + particleShape, + particleOffset, + particleAngle, + justTest +){ + var dist = tmp1; + + sub(dist, particleOffset, circleOffset); + if(vec2.squaredLength(dist) > Math.pow(circleShape.radius, 2)){ + return 0; + } + if(justTest){ + return true; + } + + var c = this.createContactEquation(circleBody,particleBody,circleShape,particleShape); + vec2.copy(c.normalA, dist); + vec2.normalize(c.normalA,c.normalA); + + // Vector from circle to contact point is the normal times the circle radius + vec2.scale(c.contactPointA, c.normalA, circleShape.radius); + add(c.contactPointA, c.contactPointA, circleOffset); + sub(c.contactPointA, c.contactPointA, circleBody.position); + + // Vector from particle center to contact point is zero + sub(c.contactPointB, particleOffset, particleBody.position); + + this.contactEquations.push(c); + + if(this.enableFriction){ + this.frictionEquations.push(this.createFrictionFromContact(c)); + } + + return 1; +}; + +var planeCapsule_tmpCircle = new Circle({ radius: 1 }), + planeCapsule_tmp1 = vec2.create(), + planeCapsule_tmp2 = vec2.create(), + planeCapsule_tmp3 = vec2.create(); + +/** + * @method planeCapsule + * @param {Body} planeBody + * @param {Circle} planeShape + * @param {Array} planeOffset + * @param {Number} planeAngle + * @param {Body} capsuleBody + * @param {Particle} capsuleShape + * @param {Array} capsuleOffset + * @param {Number} capsuleAngle + * @param {Boolean} justTest + */ +Narrowphase.prototype[Shape.PLANE | Shape.CAPSULE] = +Narrowphase.prototype.planeCapsule = function( + planeBody, + planeShape, + planeOffset, + planeAngle, + capsuleBody, + capsuleShape, + capsuleOffset, + capsuleAngle, + justTest +){ + var end1 = planeCapsule_tmp1, + end2 = planeCapsule_tmp2, + circle = planeCapsule_tmpCircle, + dst = planeCapsule_tmp3; + + // Compute world end positions + vec2.set(end1, -capsuleShape.length/2, 0); + vec2.rotate(end1,end1,capsuleAngle); + add(end1,end1,capsuleOffset); + + vec2.set(end2, capsuleShape.length/2, 0); + vec2.rotate(end2,end2,capsuleAngle); + add(end2,end2,capsuleOffset); + + circle.radius = capsuleShape.radius; + + var enableFrictionBefore; + + // Temporarily turn off friction + if(this.enableFrictionReduction){ + enableFrictionBefore = this.enableFriction; + this.enableFriction = false; + } + + // Do Narrowphase as two circles + var numContacts1 = this.circlePlane(capsuleBody,circle,end1,0, planeBody,planeShape,planeOffset,planeAngle, justTest), + numContacts2 = this.circlePlane(capsuleBody,circle,end2,0, planeBody,planeShape,planeOffset,planeAngle, justTest); + + // Restore friction + if(this.enableFrictionReduction){ + this.enableFriction = enableFrictionBefore; + } + + if(justTest){ + return numContacts1 || numContacts2; + } else { + var numTotal = numContacts1 + numContacts2; + if(this.enableFrictionReduction){ + if(numTotal){ + this.frictionEquations.push(this.createFrictionFromAverage(numTotal)); + } + } + return numTotal; + } +}; + +/** + * Creates ContactEquations and FrictionEquations for a collision. + * @method circlePlane + * @param {Body} bi The first body that should be connected to the equations. + * @param {Circle} si The circle shape participating in the collision. + * @param {Array} xi Extra offset to take into account for the Shape, in addition to the one in circleBody.position. Will *not* be rotated by circleBody.angle (maybe it should, for sake of homogenity?). Set to null if none. + * @param {Body} bj The second body that should be connected to the equations. + * @param {Plane} sj The Plane shape that is participating + * @param {Array} xj Extra offset for the plane shape. + * @param {Number} aj Extra angle to apply to the plane + */ +Narrowphase.prototype[Shape.CIRCLE | Shape.PLANE] = +Narrowphase.prototype.circlePlane = function( bi,si,xi,ai, bj,sj,xj,aj, justTest ){ + var circleBody = bi, + circleShape = si, + circleOffset = xi, // Offset from body center, rotated! + planeBody = bj, + shapeB = sj, + planeOffset = xj, + planeAngle = aj; + + planeAngle = planeAngle || 0; + + // Vector from plane to circle + var planeToCircle = tmp1, + worldNormal = tmp2, + temp = tmp3; + + sub(planeToCircle, circleOffset, planeOffset); + + // World plane normal + vec2.rotate(worldNormal, yAxis, planeAngle); + + // Normal direction distance + var d = dot(worldNormal, planeToCircle); + + if(d > circleShape.radius){ + return 0; // No overlap. Abort. + } + + if(justTest){ + return true; + } + + // Create contact + var contact = this.createContactEquation(planeBody,circleBody,sj,si); + + // ni is the plane world normal + vec2.copy(contact.normalA, worldNormal); + + // rj is the vector from circle center to the contact point + vec2.scale(contact.contactPointB, contact.normalA, -circleShape.radius); + add(contact.contactPointB, contact.contactPointB, circleOffset); + sub(contact.contactPointB, contact.contactPointB, circleBody.position); + + // ri is the distance from plane center to contact. + vec2.scale(temp, contact.normalA, d); + sub(contact.contactPointA, planeToCircle, temp ); // Subtract normal distance vector from the distance vector + add(contact.contactPointA, contact.contactPointA, planeOffset); + sub(contact.contactPointA, contact.contactPointA, planeBody.position); + + this.contactEquations.push(contact); + + if(this.enableFriction){ + this.frictionEquations.push( this.createFrictionFromContact(contact) ); + } + + return 1; +}; + +/** + * Convex/convex Narrowphase.See this article for more info. + * @method convexConvex + * @param {Body} bi + * @param {Convex} si + * @param {Array} xi + * @param {Number} ai + * @param {Body} bj + * @param {Convex} sj + * @param {Array} xj + * @param {Number} aj + */ +Narrowphase.prototype[Shape.CONVEX] = +Narrowphase.prototype[Shape.CONVEX | Shape.BOX] = +Narrowphase.prototype[Shape.BOX] = +Narrowphase.prototype.convexConvex = function( bi,si,xi,ai, bj,sj,xj,aj, justTest, precision ){ + var sepAxis = tmp1, + worldPoint = tmp2, + worldPoint0 = tmp3, + worldPoint1 = tmp4, + worldEdge = tmp5, + projected = tmp6, + penetrationVec = tmp7, + dist = tmp8, + worldNormal = tmp9, + numContacts = 0, + precision = typeof(precision) === 'number' ? precision : 0; + + var found = Narrowphase.findSeparatingAxis(si,xi,ai,sj,xj,aj,sepAxis); + if(!found){ + return 0; + } + + // Make sure the separating axis is directed from shape i to shape j + sub(dist,xj,xi); + if(dot(sepAxis,dist) > 0){ + vec2.scale(sepAxis,sepAxis,-1); + } + + // Find edges with normals closest to the separating axis + var closestEdge1 = Narrowphase.getClosestEdge(si,ai,sepAxis,true), // Flipped axis + closestEdge2 = Narrowphase.getClosestEdge(sj,aj,sepAxis); + + if(closestEdge1 === -1 || closestEdge2 === -1){ + return 0; + } + + // Loop over the shapes + for(var k=0; k<2; k++){ + + var closestEdgeA = closestEdge1, + closestEdgeB = closestEdge2, + shapeA = si, shapeB = sj, + offsetA = xi, offsetB = xj, + angleA = ai, angleB = aj, + bodyA = bi, bodyB = bj; + + if(k === 0){ + // Swap! + var tmp; + tmp = closestEdgeA; + closestEdgeA = closestEdgeB; + closestEdgeB = tmp; + + tmp = shapeA; + shapeA = shapeB; + shapeB = tmp; + + tmp = offsetA; + offsetA = offsetB; + offsetB = tmp; + + tmp = angleA; + angleA = angleB; + angleB = tmp; + + tmp = bodyA; + bodyA = bodyB; + bodyB = tmp; + } + + // Loop over 2 points in convex B + for(var j=closestEdgeB; j= 3){ + + if(justTest){ + return true; + } + + // worldPoint was on the "inside" side of each of the 3 checked edges. + // Project it to the center edge and use the projection direction as normal + + // Create contact + var c = this.createContactEquation(bodyA,bodyB,shapeA,shapeB); + numContacts++; + + // Get center edge from body A + var v0 = shapeA.vertices[(closestEdgeA) % shapeA.vertices.length], + v1 = shapeA.vertices[(closestEdgeA+1) % shapeA.vertices.length]; + + // Construct the edge + vec2.rotate(worldPoint0, v0, angleA); + vec2.rotate(worldPoint1, v1, angleA); + add(worldPoint0, worldPoint0, offsetA); + add(worldPoint1, worldPoint1, offsetA); + + sub(worldEdge, worldPoint1, worldPoint0); + + vec2.rotate90cw(c.normalA, worldEdge); // Normal points out of convex A + vec2.normalize(c.normalA,c.normalA); + + sub(dist, worldPoint, worldPoint0); // From edge point to the penetrating point + var d = dot(c.normalA,dist); // Penetration + vec2.scale(penetrationVec, c.normalA, d); // Vector penetration + + sub(c.contactPointA, worldPoint, offsetA); + sub(c.contactPointA, c.contactPointA, penetrationVec); + add(c.contactPointA, c.contactPointA, offsetA); + sub(c.contactPointA, c.contactPointA, bodyA.position); + + sub(c.contactPointB, worldPoint, offsetB); + add(c.contactPointB, c.contactPointB, offsetB); + sub(c.contactPointB, c.contactPointB, bodyB.position); + + this.contactEquations.push(c); + + // Todo reduce to 1 friction equation if we have 2 contact points + if(!this.enableFrictionReduction){ + if(this.enableFriction){ + this.frictionEquations.push(this.createFrictionFromContact(c)); + } + } + } + } + } + + if(this.enableFrictionReduction){ + if(this.enableFriction && numContacts){ + this.frictionEquations.push(this.createFrictionFromAverage(numContacts)); + } + } + + return numContacts; +}; + +// .projectConvex is called by other functions, need local tmp vectors +var pcoa_tmp1 = vec2.fromValues(0,0); + +/** + * Project a Convex onto a world-oriented axis + * @method projectConvexOntoAxis + * @static + * @param {Convex} convexShape + * @param {Array} convexOffset + * @param {Number} convexAngle + * @param {Array} worldAxis + * @param {Array} result + */ +Narrowphase.projectConvexOntoAxis = function(convexShape, convexOffset, convexAngle, worldAxis, result){ + var max=null, + min=null, + v, + value, + localAxis = pcoa_tmp1; + + // Convert the axis to local coords of the body + vec2.rotate(localAxis, worldAxis, -convexAngle); + + // Get projected position of all vertices + for(var i=0; i max){ + max = value; + } + if(min === null || value < min){ + min = value; + } + } + + if(min > max){ + var t = min; + min = max; + max = t; + } + + // Project the position of the body onto the axis - need to add this to the result + var offset = dot(convexOffset, worldAxis); + + vec2.set( result, min + offset, max + offset); +}; + +// .findSeparatingAxis is called by other functions, need local tmp vectors +var fsa_tmp1 = vec2.fromValues(0,0) +, fsa_tmp2 = vec2.fromValues(0,0) +, fsa_tmp3 = vec2.fromValues(0,0) +, fsa_tmp4 = vec2.fromValues(0,0) +, fsa_tmp5 = vec2.fromValues(0,0) +, fsa_tmp6 = vec2.fromValues(0,0); + +/** + * Find a separating axis between the shapes, that maximizes the separating distance between them. + * @method findSeparatingAxis + * @static + * @param {Convex} c1 + * @param {Array} offset1 + * @param {Number} angle1 + * @param {Convex} c2 + * @param {Array} offset2 + * @param {Number} angle2 + * @param {Array} sepAxis The resulting axis + * @return {Boolean} Whether the axis could be found. + */ +Narrowphase.findSeparatingAxis = function(c1,offset1,angle1,c2,offset2,angle2,sepAxis){ + var maxDist = null, + overlap = false, + found = false, + edge = fsa_tmp1, + worldPoint0 = fsa_tmp2, + worldPoint1 = fsa_tmp3, + normal = fsa_tmp4, + span1 = fsa_tmp5, + span2 = fsa_tmp6; + + if(c1 instanceof Box && c2 instanceof Box){ + + for(var j=0; j!==2; j++){ + var c = c1, + angle = angle1; + if(j===1){ + c = c2; + angle = angle2; + } + + for(var i=0; i!==2; i++){ + + // Get the world edge + if(i === 0){ + vec2.set(normal, 0, 1); + } else if(i === 1) { + vec2.set(normal, 1, 0); + } + if(angle !== 0){ + vec2.rotate(normal, normal, angle); + } + + // Project hulls onto that normal + Narrowphase.projectConvexOntoAxis(c1,offset1,angle1,normal,span1); + Narrowphase.projectConvexOntoAxis(c2,offset2,angle2,normal,span2); + + // Order by span position + var a=span1, + b=span2, + swapped = false; + if(span1[0] > span2[0]){ + b=span1; + a=span2; + swapped = true; + } + + // Get separating distance + var dist = b[0] - a[1]; + overlap = (dist <= 0); + + if(maxDist===null || dist > maxDist){ + vec2.copy(sepAxis, normal); + maxDist = dist; + found = overlap; + } + } + } + + } else { + + for(var j=0; j!==2; j++){ + var c = c1, + angle = angle1; + if(j===1){ + c = c2; + angle = angle2; + } + + for(var i=0; i!==c.vertices.length; i++){ + // Get the world edge + vec2.rotate(worldPoint0, c.vertices[i], angle); + vec2.rotate(worldPoint1, c.vertices[(i+1)%c.vertices.length], angle); + + sub(edge, worldPoint1, worldPoint0); + + // Get normal - just rotate 90 degrees since vertices are given in CCW + vec2.rotate90cw(normal, edge); + vec2.normalize(normal,normal); + + // Project hulls onto that normal + Narrowphase.projectConvexOntoAxis(c1,offset1,angle1,normal,span1); + Narrowphase.projectConvexOntoAxis(c2,offset2,angle2,normal,span2); + + // Order by span position + var a=span1, + b=span2, + swapped = false; + if(span1[0] > span2[0]){ + b=span1; + a=span2; + swapped = true; + } + + // Get separating distance + var dist = b[0] - a[1]; + overlap = (dist <= 0); + + if(maxDist===null || dist > maxDist){ + vec2.copy(sepAxis, normal); + maxDist = dist; + found = overlap; + } + } + } + } + + + /* + // Needs to be tested some more + for(var j=0; j!==2; j++){ + var c = c1, + angle = angle1; + if(j===1){ + c = c2; + angle = angle2; + } + + for(var i=0; i!==c.axes.length; i++){ + + var normal = c.axes[i]; + + // Project hulls onto that normal + Narrowphase.projectConvexOntoAxis(c1, offset1, angle1, normal, span1); + Narrowphase.projectConvexOntoAxis(c2, offset2, angle2, normal, span2); + + // Order by span position + var a=span1, + b=span2, + swapped = false; + if(span1[0] > span2[0]){ + b=span1; + a=span2; + swapped = true; + } + + // Get separating distance + var dist = b[0] - a[1]; + overlap = (dist <= Narrowphase.convexPrecision); + + if(maxDist===null || dist > maxDist){ + vec2.copy(sepAxis, normal); + maxDist = dist; + found = overlap; + } + } + } + */ + + return found; +}; + +// .getClosestEdge is called by other functions, need local tmp vectors +var gce_tmp1 = vec2.fromValues(0,0) +, gce_tmp2 = vec2.fromValues(0,0) +, gce_tmp3 = vec2.fromValues(0,0); + +/** + * Get the edge that has a normal closest to an axis. + * @method getClosestEdge + * @static + * @param {Convex} c + * @param {Number} angle + * @param {Array} axis + * @param {Boolean} flip + * @return {Number} Index of the edge that is closest. This index and the next spans the resulting edge. Returns -1 if failed. + */ +Narrowphase.getClosestEdge = function(c,angle,axis,flip){ + var localAxis = gce_tmp1, + edge = gce_tmp2, + normal = gce_tmp3; + + // Convert the axis to local coords of the body + vec2.rotate(localAxis, axis, -angle); + if(flip){ + vec2.scale(localAxis,localAxis,-1); + } + + var closestEdge = -1, + N = c.vertices.length, + maxDot = -1; + for(var i=0; i!==N; i++){ + // Get the edge + sub(edge, c.vertices[(i+1)%N], c.vertices[i%N]); + + // Get normal - just rotate 90 degrees since vertices are given in CCW + vec2.rotate90cw(normal, edge); + vec2.normalize(normal,normal); + + var d = dot(normal,localAxis); + if(closestEdge === -1 || d > maxDot){ + closestEdge = i % N; + maxDot = d; + } + } + + return closestEdge; +}; + +var circleHeightfield_candidate = vec2.create(), + circleHeightfield_dist = vec2.create(), + circleHeightfield_v0 = vec2.create(), + circleHeightfield_v1 = vec2.create(), + circleHeightfield_minCandidate = vec2.create(), + circleHeightfield_worldNormal = vec2.create(), + circleHeightfield_minCandidateNormal = vec2.create(); + +/** + * @method circleHeightfield + * @param {Body} bi + * @param {Circle} si + * @param {Array} xi + * @param {Body} bj + * @param {Heightfield} sj + * @param {Array} xj + * @param {Number} aj + */ +Narrowphase.prototype[Shape.CIRCLE | Shape.HEIGHTFIELD] = +Narrowphase.prototype.circleHeightfield = function( circleBody,circleShape,circlePos,circleAngle, + hfBody,hfShape,hfPos,hfAngle, justTest, radius ){ + var data = hfShape.heights, + radius = radius || circleShape.radius, + w = hfShape.elementWidth, + dist = circleHeightfield_dist, + candidate = circleHeightfield_candidate, + minCandidate = circleHeightfield_minCandidate, + minCandidateNormal = circleHeightfield_minCandidateNormal, + worldNormal = circleHeightfield_worldNormal, + v0 = circleHeightfield_v0, + v1 = circleHeightfield_v1; + + // Get the index of the points to test against + var idxA = Math.floor( (circlePos[0] - radius - hfPos[0]) / w ), + idxB = Math.ceil( (circlePos[0] + radius - hfPos[0]) / w ); + + /*if(idxB < 0 || idxA >= data.length) + return justTest ? false : 0;*/ + + if(idxA < 0){ + idxA = 0; + } + if(idxB >= data.length){ + idxB = data.length-1; + } + + // Get max and min + var max = data[idxA], + min = data[idxB]; + for(var i=idxA; i max){ + max = data[i]; + } + } + + if(circlePos[1]-radius > max){ + return justTest ? false : 0; + } + + /* + if(circlePos[1]+radius < min){ + // Below the minimum point... We can just guess. + // TODO + } + */ + + // 1. Check so center of circle is not inside the field. If it is, this wont work... + // 2. For each edge + // 2. 1. Get point on circle that is closest to the edge (scale normal with -radius) + // 2. 2. Check if point is inside. + + var found = false; + + // Check all edges first + for(var i=idxA; i= v0[0] && candidate[0] < v1[0] && d <= 0){ + + if(justTest){ + return true; + } + + found = true; + + // Store the candidate point, projected to the edge + vec2.scale(dist,worldNormal,-d); + vec2.add(minCandidate,candidate,dist); + vec2.copy(minCandidateNormal,worldNormal); + + var c = this.createContactEquation(hfBody,circleBody,hfShape,circleShape); + + // Normal is out of the heightfield + vec2.copy(c.normalA, minCandidateNormal); + + // Vector from circle to heightfield + vec2.scale(c.contactPointB, c.normalA, -radius); + add(c.contactPointB, c.contactPointB, circlePos); + sub(c.contactPointB, c.contactPointB, circleBody.position); + + vec2.copy(c.contactPointA, minCandidate); + vec2.sub(c.contactPointA, c.contactPointA, hfBody.position); + + this.contactEquations.push(c); + + if(this.enableFriction){ + this.frictionEquations.push( this.createFrictionFromContact(c) ); + } + } + } + + // Check all vertices + found = false; + if(radius > 0){ + for(var i=idxA; i<=idxB; i++){ + + // Get point + vec2.set(v0, i*w, data[i]); + vec2.add(v0,v0,hfPos); + + vec2.sub(dist, circlePos, v0); + + if(vec2.squaredLength(dist) < Math.pow(radius, 2)){ + + if(justTest){ + return true; + } + + found = true; + + var c = this.createContactEquation(hfBody,circleBody,hfShape,circleShape); + + // Construct normal - out of heightfield + vec2.copy(c.normalA, dist); + vec2.normalize(c.normalA,c.normalA); + + vec2.scale(c.contactPointB, c.normalA, -radius); + add(c.contactPointB, c.contactPointB, circlePos); + sub(c.contactPointB, c.contactPointB, circleBody.position); + + sub(c.contactPointA, v0, hfPos); + add(c.contactPointA, c.contactPointA, hfPos); + sub(c.contactPointA, c.contactPointA, hfBody.position); + + this.contactEquations.push(c); + + if(this.enableFriction){ + this.frictionEquations.push(this.createFrictionFromContact(c)); + } + } + } + } + + if(found){ + return 1; + } + + return 0; + +}; + +var convexHeightfield_v0 = vec2.create(), + convexHeightfield_v1 = vec2.create(), + convexHeightfield_tilePos = vec2.create(), + convexHeightfield_tempConvexShape = new Convex({ vertices: [vec2.create(),vec2.create(),vec2.create(),vec2.create()] }); +/** + * @method circleHeightfield + * @param {Body} bi + * @param {Circle} si + * @param {Array} xi + * @param {Body} bj + * @param {Heightfield} sj + * @param {Array} xj + * @param {Number} aj + */ +Narrowphase.prototype[Shape.BOX | Shape.HEIGHTFIELD] = +Narrowphase.prototype[Shape.CONVEX | Shape.HEIGHTFIELD] = +Narrowphase.prototype.convexHeightfield = function( convexBody,convexShape,convexPos,convexAngle, + hfBody,hfShape,hfPos,hfAngle, justTest ){ + var data = hfShape.heights, + w = hfShape.elementWidth, + v0 = convexHeightfield_v0, + v1 = convexHeightfield_v1, + tilePos = convexHeightfield_tilePos, + tileConvex = convexHeightfield_tempConvexShape; + + // Get the index of the points to test against + var idxA = Math.floor( (convexBody.aabb.lowerBound[0] - hfPos[0]) / w ), + idxB = Math.ceil( (convexBody.aabb.upperBound[0] - hfPos[0]) / w ); + + if(idxA < 0){ + idxA = 0; + } + if(idxB >= data.length){ + idxB = data.length-1; + } + + // Get max and min + var max = data[idxA], + min = data[idxB]; + for(var i=idxA; i max){ + max = data[i]; + } + } + + if(convexBody.aabb.lowerBound[1] > max){ + return justTest ? false : 0; + } + + var found = false; + var numContacts = 0; + + // Loop over all edges + // TODO: If possible, construct a convex from several data points (need o check if the points make a convex shape) + for(var i=idxA; i= 0 || aabb.containsPoint(this.from)){ + this.intersectBody(result, body); + } + } +}; + +var intersectBody_worldPosition = vec2.create(); + +/** + * Shoot a ray at a body, get back information about the hit. + * @method intersectBody + * @private + * @param {Body} body + */ +Ray.prototype.intersectBody = function (result, body) { + var checkCollisionResponse = this.checkCollisionResponse; + + if(checkCollisionResponse && !body.collisionResponse){ + return; + } + + var worldPosition = intersectBody_worldPosition; + + for (var i = 0, N = body.shapes.length; i < N; i++) { + var shape = body.shapes[i]; + + if(checkCollisionResponse && !shape.collisionResponse){ + continue; // Skip + } + + if((this.collisionGroup & shape.collisionMask) === 0 || (shape.collisionGroup & this.collisionMask) === 0){ + continue; + } + + // Get world angle and position of the shape + vec2.rotate(worldPosition, shape.position, body.angle); + vec2.add(worldPosition, worldPosition, body.position); + var worldAngle = shape.angle + body.angle; + + this.intersectShape( + result, + shape, + worldAngle, + worldPosition, + body + ); + + if(result.shouldStop(this)){ + break; + } + } +}; + +/** + * @method intersectShape + * @private + * @param {Shape} shape + * @param {number} angle + * @param {array} position + * @param {Body} body + */ +Ray.prototype.intersectShape = function(result, shape, angle, position, body){ + var from = this.from; + + // Checking radius + var distance = distanceFromIntersectionSquared(from, this.direction, position); + if (distance > shape.boundingRadius * shape.boundingRadius) { + return; + } + + this._currentBody = body; + this._currentShape = shape; + + shape.raycast(result, this, position, angle); + + this._currentBody = this._currentShape = null; +}; + +/** + * Get the AABB of the ray. + * @method getAABB + * @param {AABB} aabb + */ +Ray.prototype.getAABB = function(result){ + var to = this.to; + var from = this.from; + vec2.set( + result.lowerBound, + Math.min(to[0], from[0]), + Math.min(to[1], from[1]) + ); + vec2.set( + result.upperBound, + Math.max(to[0], from[0]), + Math.max(to[1], from[1]) + ); +}; + +var hitPointWorld = vec2.create(); + +/** + * @method reportIntersection + * @private + * @param {number} fraction + * @param {array} normal + * @param {number} [faceIndex=-1] + * @return {boolean} True if the intersections should continue + */ +Ray.prototype.reportIntersection = function(result, fraction, normal, faceIndex){ + var from = this.from; + var to = this.to; + var shape = this._currentShape; + var body = this._currentBody; + + // Skip back faces? + if(this.skipBackfaces && vec2.dot(normal, this.direction) > 0){ + return; + } + + switch(this.mode){ + + case Ray.ALL: + result.set( + normal, + shape, + body, + fraction, + faceIndex + ); + this.callback(result); + break; + + case Ray.CLOSEST: + + // Store if closer than current closest + if(fraction < result.fraction || !result.hasHit()){ + result.set( + normal, + shape, + body, + fraction, + faceIndex + ); + } + break; + + case Ray.ANY: + + // Report and stop. + result.set( + normal, + shape, + body, + fraction, + faceIndex + ); + break; + } +}; + +var v0 = vec2.create(), + intersect = vec2.create(); +function distanceFromIntersectionSquared(from, direction, position) { + + // v0 is vector from from to position + vec2.sub(v0, position, from); + var dot = vec2.dot(v0, direction); + + // intersect = direction * dot + from + vec2.scale(intersect, direction, dot); + vec2.add(intersect, intersect, from); + + return vec2.squaredDistance(position, intersect); +} + + +},{"../collision/AABB":7,"../collision/RaycastResult":12,"../math/vec2":30,"../shapes/Shape":45}],12:[function(_dereq_,module,exports){ +var vec2 = _dereq_('../math/vec2'); +var Ray = _dereq_('../collision/Ray'); + +module.exports = RaycastResult; + +/** + * Storage for Ray casting hit data. + * @class RaycastResult + * @constructor + */ +function RaycastResult(){ + + /** + * The normal of the hit, oriented in world space. + * @property {array} normal + */ + this.normal = vec2.create(); + + /** + * The hit shape, or null. + * @property {Shape} shape + */ + this.shape = null; + + /** + * The hit body, or null. + * @property {Body} body + */ + this.body = null; + + /** + * The index of the hit triangle, if the hit shape was indexable. + * @property {number} faceIndex + * @default -1 + */ + this.faceIndex = -1; + + /** + * Distance to the hit, as a fraction. 0 is at the "from" point, 1 is at the "to" point. Will be set to -1 if there was no hit yet. + * @property {number} fraction + * @default -1 + */ + this.fraction = -1; + + /** + * If the ray should stop traversing. + * @readonly + * @property {Boolean} isStopped + */ + this.isStopped = false; +} + +/** + * Reset all result data. Must be done before re-using the result object. + * @method reset + */ +RaycastResult.prototype.reset = function () { + vec2.set(this.normal, 0, 0); + this.shape = null; + this.body = null; + this.faceIndex = -1; + this.fraction = -1; + this.isStopped = false; +}; + +/** + * Get the distance to the hit point. + * @method getHitDistance + * @param {Ray} ray + */ +RaycastResult.prototype.getHitDistance = function (ray) { + return vec2.distance(ray.from, ray.to) * this.fraction; +}; + +/** + * Returns true if the ray hit something since the last reset(). + * @method hasHit + */ +RaycastResult.prototype.hasHit = function () { + return this.fraction !== -1; +}; + +/** + * Get world hit point. + * @method getHitPoint + * @param {array} out + * @param {Ray} ray + */ +RaycastResult.prototype.getHitPoint = function (out, ray) { + vec2.lerp(out, ray.from, ray.to, this.fraction); +}; + +/** + * Can be called while iterating over hits to stop searching for hit points. + * @method stop + */ +RaycastResult.prototype.stop = function(){ + this.isStopped = true; +}; + +/** + * @method shouldStop + * @private + * @param {Ray} ray + * @return {boolean} + */ +RaycastResult.prototype.shouldStop = function(ray){ + return this.isStopped || (this.fraction !== -1 && ray.mode === Ray.ANY); +}; + +/** + * @method set + * @private + * @param {array} normal + * @param {Shape} shape + * @param {Body} body + * @param {number} fraction + */ +RaycastResult.prototype.set = function( + normal, + shape, + body, + fraction, + faceIndex +){ + vec2.copy(this.normal, normal); + this.shape = shape; + this.body = body; + this.fraction = fraction; + this.faceIndex = faceIndex; +}; +},{"../collision/Ray":11,"../math/vec2":30}],13:[function(_dereq_,module,exports){ +var Utils = _dereq_('../utils/Utils') +, Broadphase = _dereq_('../collision/Broadphase'); + +module.exports = SAPBroadphase; + +/** + * Sweep and prune broadphase along one axis. + * + * @class SAPBroadphase + * @constructor + * @extends Broadphase + */ +function SAPBroadphase(){ + Broadphase.call(this,Broadphase.SAP); + + /** + * List of bodies currently in the broadphase. + * @property axisList + * @type {Array} + */ + this.axisList = []; + + /** + * The axis to sort along. 0 means x-axis and 1 y-axis. If your bodies are more spread out over the X axis, set axisIndex to 0, and you will gain some performance. + * @property axisIndex + * @type {Number} + */ + this.axisIndex = 0; + + var that = this; + this._addBodyHandler = function(e){ + that.axisList.push(e.body); + }; + + this._removeBodyHandler = function(e){ + // Remove from list + var idx = that.axisList.indexOf(e.body); + if(idx !== -1){ + that.axisList.splice(idx,1); + } + }; +} +SAPBroadphase.prototype = new Broadphase(); +SAPBroadphase.prototype.constructor = SAPBroadphase; + +/** + * Change the world + * @method setWorld + * @param {World} world + */ +SAPBroadphase.prototype.setWorld = function(world){ + // Clear the old axis array + this.axisList.length = 0; + + // Add all bodies from the new world + Utils.appendArray(this.axisList, world.bodies); + + // Remove old handlers, if any + world + .off("addBody",this._addBodyHandler) + .off("removeBody",this._removeBodyHandler); + + // Add handlers to update the list of bodies. + world.on("addBody",this._addBodyHandler).on("removeBody",this._removeBodyHandler); + + this.world = world; +}; + +/** + * Sorts bodies along an axis. + * @method sortAxisList + * @param {Array} a + * @param {number} axisIndex + * @return {Array} + */ +SAPBroadphase.sortAxisList = function(a, axisIndex){ + axisIndex = axisIndex|0; + for(var i=1,l=a.length; i=0;j--) { + if(a[j].aabb.lowerBound[axisIndex] <= v.aabb.lowerBound[axisIndex]){ + break; + } + a[j+1] = a[j]; + } + a[j+1] = v; + } + return a; +}; + +SAPBroadphase.prototype.sortList = function(){ + var bodies = this.axisList, + axisIndex = this.axisIndex; + + // Sort the lists + SAPBroadphase.sortAxisList(bodies, axisIndex); +}; + +/** + * Get the colliding pairs + * @method getCollisionPairs + * @param {World} world + * @return {Array} + */ +SAPBroadphase.prototype.getCollisionPairs = function(world){ + var bodies = this.axisList, + result = this.result, + axisIndex = this.axisIndex; + + result.length = 0; + + // Update all AABBs if needed + var l = bodies.length; + while(l--){ + var b = bodies[l]; + if(b.aabbNeedsUpdate){ + b.updateAABB(); + } + } + + // Sort the lists + this.sortList(); + + // Look through the X list + for(var i=0, N=bodies.length|0; i!==N; i++){ + var bi = bodies[i]; + + for(var j=i+1; j G = [-n -rixn n rjxn] + + var r = vec2.create(); + var ri = vec2.create(); // worldAnchorA + var rj = vec2.create(); // worldAnchorB + var that = this; + normal.computeGq = function(){ + var bodyA = this.bodyA, + bodyB = this.bodyB, + xi = bodyA.position, + xj = bodyB.position; + + // Transform local anchors to world + vec2.rotate(ri, localAnchorA, bodyA.angle); + vec2.rotate(rj, localAnchorB, bodyB.angle); + + vec2.add(r, xj, rj); + vec2.sub(r, r, ri); + vec2.sub(r, r, xi); + + //vec2.sub(r, bodyB.position, bodyA.position); + return vec2.length(r) - that.distance; + }; + + // Make the contact constraint bilateral + this.setMaxForce(maxForce); + + /** + * If the upper limit is enabled or not. + * @property {Boolean} upperLimitEnabled + */ + this.upperLimitEnabled = false; + + /** + * The upper constraint limit. + * @property {number} upperLimit + */ + this.upperLimit = 1; + + /** + * If the lower limit is enabled or not. + * @property {Boolean} lowerLimitEnabled + */ + this.lowerLimitEnabled = false; + + /** + * The lower constraint limit. + * @property {number} lowerLimit + */ + this.lowerLimit = 0; + + /** + * Current constraint position. This is equal to the current distance between the world anchor points. + * @property {number} position + */ + this.position = 0; +} +DistanceConstraint.prototype = new Constraint(); +DistanceConstraint.prototype.constructor = DistanceConstraint; + +/** + * Update the constraint equations. Should be done if any of the bodies changed position, before solving. + * @method update + */ +var n = vec2.create(); +var ri = vec2.create(); // worldAnchorA +var rj = vec2.create(); // worldAnchorB +DistanceConstraint.prototype.update = function(){ + var normal = this.equations[0], + bodyA = this.bodyA, + bodyB = this.bodyB, + distance = this.distance, + xi = bodyA.position, + xj = bodyB.position, + normalEquation = this.equations[0], + G = normal.G; + + // Transform local anchors to world + vec2.rotate(ri, this.localAnchorA, bodyA.angle); + vec2.rotate(rj, this.localAnchorB, bodyB.angle); + + // Get world anchor points and normal + vec2.add(n, xj, rj); + vec2.sub(n, n, ri); + vec2.sub(n, n, xi); + this.position = vec2.length(n); + + var violating = false; + if(this.upperLimitEnabled){ + if(this.position > this.upperLimit){ + normalEquation.maxForce = 0; + normalEquation.minForce = -this.maxForce; + this.distance = this.upperLimit; + violating = true; + } + } + + if(this.lowerLimitEnabled){ + if(this.position < this.lowerLimit){ + normalEquation.maxForce = this.maxForce; + normalEquation.minForce = 0; + this.distance = this.lowerLimit; + violating = true; + } + } + + if((this.lowerLimitEnabled || this.upperLimitEnabled) && !violating){ + // No constraint needed. + normalEquation.enabled = false; + return; + } + + normalEquation.enabled = true; + + vec2.normalize(n,n); + + // Caluclate cross products + var rixn = vec2.crossLength(ri, n), + rjxn = vec2.crossLength(rj, n); + + // G = [-n -rixn n rjxn] + G[0] = -n[0]; + G[1] = -n[1]; + G[2] = -rixn; + G[3] = n[0]; + G[4] = n[1]; + G[5] = rjxn; +}; + +/** + * Set the max force to be used + * @method setMaxForce + * @param {Number} maxForce + */ +DistanceConstraint.prototype.setMaxForce = function(maxForce){ + var normal = this.equations[0]; + normal.minForce = -maxForce; + normal.maxForce = maxForce; +}; + +/** + * Get the max force + * @method getMaxForce + * @return {Number} + */ +DistanceConstraint.prototype.getMaxForce = function(){ + var normal = this.equations[0]; + return normal.maxForce; +}; + +},{"../equations/Equation":22,"../math/vec2":30,"../utils/Utils":57,"./Constraint":14}],16:[function(_dereq_,module,exports){ +var Constraint = _dereq_('./Constraint') +, Equation = _dereq_('../equations/Equation') +, AngleLockEquation = _dereq_('../equations/AngleLockEquation') +, vec2 = _dereq_('../math/vec2'); + +module.exports = GearConstraint; + +/** + * Constrains the angle of two bodies to each other to be equal. If a gear ratio is not one, the angle of bodyA must be a multiple of the angle of bodyB. + * @class GearConstraint + * @constructor + * @author schteppe + * @param {Body} bodyA + * @param {Body} bodyB + * @param {Object} [options] + * @param {Number} [options.angle=0] Relative angle between the bodies. Will be set to the current angle between the bodies (the gear ratio is accounted for). + * @param {Number} [options.ratio=1] Gear ratio. + * @param {Number} [options.maxTorque] Maximum torque to apply. + * @extends Constraint + * + * @example + * var constraint = new GearConstraint(bodyA, bodyB); + * world.addConstraint(constraint); + * + * @example + * var constraint = new GearConstraint(bodyA, bodyB, { + * ratio: 2, + * maxTorque: 1000 + * }); + * world.addConstraint(constraint); + */ +function GearConstraint(bodyA, bodyB, options){ + options = options || {}; + + Constraint.call(this, bodyA, bodyB, Constraint.GEAR, options); + + /** + * The gear ratio. + * @property ratio + * @type {Number} + */ + this.ratio = options.ratio !== undefined ? options.ratio : 1; + + /** + * The relative angle + * @property angle + * @type {Number} + */ + this.angle = options.angle !== undefined ? options.angle : bodyB.angle - this.ratio * bodyA.angle; + + // Send same parameters to the equation + options.angle = this.angle; + options.ratio = this.ratio; + + this.equations = [ + new AngleLockEquation(bodyA,bodyB,options), + ]; + + // Set max torque + if(options.maxTorque !== undefined){ + this.setMaxTorque(options.maxTorque); + } +} +GearConstraint.prototype = new Constraint(); +GearConstraint.prototype.constructor = GearConstraint; + +GearConstraint.prototype.update = function(){ + var eq = this.equations[0]; + if(eq.ratio !== this.ratio){ + eq.setRatio(this.ratio); + } + eq.angle = this.angle; +}; + +/** + * Set the max torque for the constraint. + * @method setMaxTorque + * @param {Number} torque + */ +GearConstraint.prototype.setMaxTorque = function(torque){ + this.equations[0].setMaxTorque(torque); +}; + +/** + * Get the max torque for the constraint. + * @method getMaxTorque + * @return {Number} + */ +GearConstraint.prototype.getMaxTorque = function(torque){ + return this.equations[0].maxForce; +}; +},{"../equations/AngleLockEquation":20,"../equations/Equation":22,"../math/vec2":30,"./Constraint":14}],17:[function(_dereq_,module,exports){ +var Constraint = _dereq_('./Constraint') +, vec2 = _dereq_('../math/vec2') +, Equation = _dereq_('../equations/Equation'); + +module.exports = LockConstraint; + +/** + * Locks the relative position and rotation between two bodies. + * + * @class LockConstraint + * @constructor + * @author schteppe + * @param {Body} bodyA + * @param {Body} bodyB + * @param {Object} [options] + * @param {Array} [options.localOffsetB] The offset of bodyB in bodyA's frame. If not given the offset is computed from current positions. + * @param {number} [options.localAngleB] The angle of bodyB in bodyA's frame. If not given, the angle is computed from current angles. + * @param {number} [options.maxForce] + * @extends Constraint + * + * @example + * // Locks the relative position and rotation between bodyA and bodyB + * var constraint = new LockConstraint(bodyA, bodyB); + * world.addConstraint(constraint); + */ +function LockConstraint(bodyA, bodyB, options){ + options = options || {}; + + Constraint.call(this,bodyA,bodyB,Constraint.LOCK,options); + + var maxForce = ( typeof(options.maxForce)==="undefined" ? Number.MAX_VALUE : options.maxForce ); + + var localAngleB = options.localAngleB || 0; + + // Use 3 equations: + // gx = (xj - xi - l) * xhat = 0 + // gy = (xj - xi - l) * yhat = 0 + // gr = (xi - xj + r) * that = 0 + // + // ...where: + // l is the localOffsetB vector rotated to world in bodyA frame + // r is the same vector but reversed and rotated from bodyB frame + // xhat, yhat are world axis vectors + // that is the tangent of r + // + // For the first two constraints, we get + // G*W = (vj - vi - ldot ) * xhat + // = (vj - vi - wi x l) * xhat + // + // Since (wi x l) * xhat = (l x xhat) * wi, we get + // G*W = [ -1 0 (-l x xhat) 1 0 0] * [vi wi vj wj] + // + // The last constraint gives + // GW = (vi - vj + wj x r) * that + // = [ that 0 -that (r x t) ] + + var x = new Equation(bodyA,bodyB,-maxForce,maxForce), + y = new Equation(bodyA,bodyB,-maxForce,maxForce), + rot = new Equation(bodyA,bodyB,-maxForce,maxForce); + + var l = vec2.create(), + g = vec2.create(), + that = this; + x.computeGq = function(){ + vec2.rotate(l, that.localOffsetB, bodyA.angle); + vec2.sub(g, bodyB.position, bodyA.position); + vec2.sub(g, g, l); + return g[0]; + }; + y.computeGq = function(){ + vec2.rotate(l, that.localOffsetB, bodyA.angle); + vec2.sub(g, bodyB.position, bodyA.position); + vec2.sub(g, g, l); + return g[1]; + }; + var r = vec2.create(), + t = vec2.create(); + rot.computeGq = function(){ + vec2.rotate(r, that.localOffsetB, bodyB.angle - that.localAngleB); + vec2.scale(r,r,-1); + vec2.sub(g,bodyA.position,bodyB.position); + vec2.add(g,g,r); + vec2.rotate(t,r,-Math.PI/2); + vec2.normalize(t,t); + return vec2.dot(g,t); + }; + + /** + * The offset of bodyB in bodyA's frame. + * @property {Array} localOffsetB + */ + this.localOffsetB = vec2.create(); + if(options.localOffsetB){ + vec2.copy(this.localOffsetB, options.localOffsetB); + } else { + // Construct from current positions + vec2.sub(this.localOffsetB, bodyB.position, bodyA.position); + vec2.rotate(this.localOffsetB, this.localOffsetB, -bodyA.angle); + } + + /** + * The offset angle of bodyB in bodyA's frame. + * @property {Number} localAngleB + */ + this.localAngleB = 0; + if(typeof(options.localAngleB) === 'number'){ + this.localAngleB = options.localAngleB; + } else { + // Construct + this.localAngleB = bodyB.angle - bodyA.angle; + } + + this.equations.push(x, y, rot); + this.setMaxForce(maxForce); +} +LockConstraint.prototype = new Constraint(); +LockConstraint.prototype.constructor = LockConstraint; + +/** + * Set the maximum force to be applied. + * @method setMaxForce + * @param {Number} force + */ +LockConstraint.prototype.setMaxForce = function(force){ + var eqs = this.equations; + for(var i=0; ithis tutorial. Also called "slider constraint". + * + * @class PrismaticConstraint + * @constructor + * @extends Constraint + * @author schteppe + * @param {Body} bodyA + * @param {Body} bodyB + * @param {Object} [options] + * @param {Number} [options.maxForce] Max force to be applied by the constraint + * @param {Array} [options.localAnchorA] Body A's anchor point, defined in its own local frame. + * @param {Array} [options.localAnchorB] Body B's anchor point, defined in its own local frame. + * @param {Array} [options.localAxisA] An axis, defined in body A frame, that body B's anchor point may slide along. + * @param {Boolean} [options.disableRotationalLock] If set to true, bodyB will be free to rotate around its anchor point. + * @param {Number} [options.upperLimit] + * @param {Number} [options.lowerLimit] + * @todo Ability to create using only a point and a worldAxis + */ +function PrismaticConstraint(bodyA, bodyB, options){ + options = options || {}; + Constraint.call(this,bodyA,bodyB,Constraint.PRISMATIC,options); + + // Get anchors + var localAnchorA = vec2.fromValues(0,0), + localAxisA = vec2.fromValues(1,0), + localAnchorB = vec2.fromValues(0,0); + if(options.localAnchorA){ vec2.copy(localAnchorA, options.localAnchorA); } + if(options.localAxisA){ vec2.copy(localAxisA, options.localAxisA); } + if(options.localAnchorB){ vec2.copy(localAnchorB, options.localAnchorB); } + + /** + * @property localAnchorA + * @type {Array} + */ + this.localAnchorA = localAnchorA; + + /** + * @property localAnchorB + * @type {Array} + */ + this.localAnchorB = localAnchorB; + + /** + * @property localAxisA + * @type {Array} + */ + this.localAxisA = localAxisA; + + /* + + The constraint violation for the common axis point is + + g = ( xj + rj - xi - ri ) * t := gg*t + + where r are body-local anchor points, and t is a tangent to the constraint axis defined in body i frame. + + gdot = ( vj + wj x rj - vi - wi x ri ) * t + ( xj + rj - xi - ri ) * ( wi x t ) + + Note the use of the chain rule. Now we identify the jacobian + + G*W = [ -t -ri x t + t x gg t rj x t ] * [vi wi vj wj] + + The rotational part is just a rotation lock. + + */ + + var maxForce = this.maxForce = typeof(options.maxForce)!=="undefined" ? options.maxForce : Number.MAX_VALUE; + + // Translational part + var trans = new Equation(bodyA,bodyB,-maxForce,maxForce); + var ri = new vec2.create(), + rj = new vec2.create(), + gg = new vec2.create(), + t = new vec2.create(); + trans.computeGq = function(){ + // g = ( xj + rj - xi - ri ) * t + return vec2.dot(gg,t); + }; + trans.updateJacobian = function(){ + var G = this.G, + xi = bodyA.position, + xj = bodyB.position; + vec2.rotate(ri,localAnchorA,bodyA.angle); + vec2.rotate(rj,localAnchorB,bodyB.angle); + vec2.add(gg,xj,rj); + vec2.sub(gg,gg,xi); + vec2.sub(gg,gg,ri); + vec2.rotate(t,localAxisA,bodyA.angle+Math.PI/2); + + G[0] = -t[0]; + G[1] = -t[1]; + G[2] = -vec2.crossLength(ri,t) + vec2.crossLength(t,gg); + G[3] = t[0]; + G[4] = t[1]; + G[5] = vec2.crossLength(rj,t); + }; + this.equations.push(trans); + + // Rotational part + if(!options.disableRotationalLock){ + var rot = new RotationalLockEquation(bodyA,bodyB,-maxForce,maxForce); + this.equations.push(rot); + } + + /** + * The position of anchor A relative to anchor B, along the constraint axis. + * @property position + * @type {Number} + */ + this.position = 0; + + // Is this one used at all? + this.velocity = 0; + + /** + * Set to true to enable lower limit. + * @property lowerLimitEnabled + * @type {Boolean} + */ + this.lowerLimitEnabled = typeof(options.lowerLimit)!=="undefined" ? true : false; + + /** + * Set to true to enable upper limit. + * @property upperLimitEnabled + * @type {Boolean} + */ + this.upperLimitEnabled = typeof(options.upperLimit)!=="undefined" ? true : false; + + /** + * Lower constraint limit. The constraint position is forced to be larger than this value. + * @property lowerLimit + * @type {Number} + */ + this.lowerLimit = typeof(options.lowerLimit)!=="undefined" ? options.lowerLimit : 0; + + /** + * Upper constraint limit. The constraint position is forced to be smaller than this value. + * @property upperLimit + * @type {Number} + */ + this.upperLimit = typeof(options.upperLimit)!=="undefined" ? options.upperLimit : 1; + + // Equations used for limits + this.upperLimitEquation = new ContactEquation(bodyA,bodyB); + this.lowerLimitEquation = new ContactEquation(bodyA,bodyB); + + // Set max/min forces + this.upperLimitEquation.minForce = this.lowerLimitEquation.minForce = 0; + this.upperLimitEquation.maxForce = this.lowerLimitEquation.maxForce = maxForce; + + /** + * Equation used for the motor. + * @property motorEquation + * @type {Equation} + */ + this.motorEquation = new Equation(bodyA,bodyB); + + /** + * The current motor state. Enable or disable the motor using .enableMotor + * @property motorEnabled + * @type {Boolean} + */ + this.motorEnabled = false; + + /** + * Set the target speed for the motor. + * @property motorSpeed + * @type {Number} + */ + this.motorSpeed = 0; + + var that = this; + var motorEquation = this.motorEquation; + var old = motorEquation.computeGW; + motorEquation.computeGq = function(){ return 0; }; + motorEquation.computeGW = function(){ + var G = this.G, + bi = this.bodyA, + bj = this.bodyB, + vi = bi.velocity, + vj = bj.velocity, + wi = bi.angularVelocity, + wj = bj.angularVelocity; + return this.gmult(G,vi,wi,vj,wj) + that.motorSpeed; + }; +} + +PrismaticConstraint.prototype = new Constraint(); +PrismaticConstraint.prototype.constructor = PrismaticConstraint; + +var worldAxisA = vec2.create(), + worldAnchorA = vec2.create(), + worldAnchorB = vec2.create(), + orientedAnchorA = vec2.create(), + orientedAnchorB = vec2.create(), + tmp = vec2.create(); + +/** + * Update the constraint equations. Should be done if any of the bodies changed position, before solving. + * @method update + */ +PrismaticConstraint.prototype.update = function(){ + var eqs = this.equations, + trans = eqs[0], + upperLimit = this.upperLimit, + lowerLimit = this.lowerLimit, + upperLimitEquation = this.upperLimitEquation, + lowerLimitEquation = this.lowerLimitEquation, + bodyA = this.bodyA, + bodyB = this.bodyB, + localAxisA = this.localAxisA, + localAnchorA = this.localAnchorA, + localAnchorB = this.localAnchorB; + + trans.updateJacobian(); + + // Transform local things to world + vec2.rotate(worldAxisA, localAxisA, bodyA.angle); + vec2.rotate(orientedAnchorA, localAnchorA, bodyA.angle); + vec2.add(worldAnchorA, orientedAnchorA, bodyA.position); + vec2.rotate(orientedAnchorB, localAnchorB, bodyB.angle); + vec2.add(worldAnchorB, orientedAnchorB, bodyB.position); + + var relPosition = this.position = vec2.dot(worldAnchorB,worldAxisA) - vec2.dot(worldAnchorA,worldAxisA); + + // Motor + if(this.motorEnabled){ + // G = [ a a x ri -a -a x rj ] + var G = this.motorEquation.G; + G[0] = worldAxisA[0]; + G[1] = worldAxisA[1]; + G[2] = vec2.crossLength(worldAxisA,orientedAnchorB); + G[3] = -worldAxisA[0]; + G[4] = -worldAxisA[1]; + G[5] = -vec2.crossLength(worldAxisA,orientedAnchorA); + } + + /* + Limits strategy: + Add contact equation, with normal along the constraint axis. + min/maxForce is set so the constraint is repulsive in the correct direction. + Some offset is added to either equation.contactPointA or .contactPointB to get the correct upper/lower limit. + + ^ + | + upperLimit x + | ------ + anchorB x<---| B | + | | | + ------ | ------ + | | | + | A |-->x anchorA + ------ | + x lowerLimit + | + axis + */ + + + if(this.upperLimitEnabled && relPosition > upperLimit){ + // Update contact constraint normal, etc + vec2.scale(upperLimitEquation.normalA, worldAxisA, -1); + vec2.sub(upperLimitEquation.contactPointA, worldAnchorA, bodyA.position); + vec2.sub(upperLimitEquation.contactPointB, worldAnchorB, bodyB.position); + vec2.scale(tmp,worldAxisA,upperLimit); + vec2.add(upperLimitEquation.contactPointA,upperLimitEquation.contactPointA,tmp); + if(eqs.indexOf(upperLimitEquation) === -1){ + eqs.push(upperLimitEquation); + } + } else { + var idx = eqs.indexOf(upperLimitEquation); + if(idx !== -1){ + eqs.splice(idx,1); + } + } + + if(this.lowerLimitEnabled && relPosition < lowerLimit){ + // Update contact constraint normal, etc + vec2.scale(lowerLimitEquation.normalA, worldAxisA, 1); + vec2.sub(lowerLimitEquation.contactPointA, worldAnchorA, bodyA.position); + vec2.sub(lowerLimitEquation.contactPointB, worldAnchorB, bodyB.position); + vec2.scale(tmp,worldAxisA,lowerLimit); + vec2.sub(lowerLimitEquation.contactPointB,lowerLimitEquation.contactPointB,tmp); + if(eqs.indexOf(lowerLimitEquation) === -1){ + eqs.push(lowerLimitEquation); + } + } else { + var idx = eqs.indexOf(lowerLimitEquation); + if(idx !== -1){ + eqs.splice(idx,1); + } + } +}; + +/** + * Enable the motor + * @method enableMotor + */ +PrismaticConstraint.prototype.enableMotor = function(){ + if(this.motorEnabled){ + return; + } + this.equations.push(this.motorEquation); + this.motorEnabled = true; +}; + +/** + * Disable the rotational motor + * @method disableMotor + */ +PrismaticConstraint.prototype.disableMotor = function(){ + if(!this.motorEnabled){ + return; + } + var i = this.equations.indexOf(this.motorEquation); + this.equations.splice(i,1); + this.motorEnabled = false; +}; + +/** + * Set the constraint limits. + * @method setLimits + * @param {number} lower Lower limit. + * @param {number} upper Upper limit. + */ +PrismaticConstraint.prototype.setLimits = function (lower, upper) { + if(typeof(lower) === 'number'){ + this.lowerLimit = lower; + this.lowerLimitEnabled = true; + } else { + this.lowerLimit = lower; + this.lowerLimitEnabled = false; + } + + if(typeof(upper) === 'number'){ + this.upperLimit = upper; + this.upperLimitEnabled = true; + } else { + this.upperLimit = upper; + this.upperLimitEnabled = false; + } +}; + + +},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../math/vec2":30,"./Constraint":14}],19:[function(_dereq_,module,exports){ +var Constraint = _dereq_('./Constraint') +, Equation = _dereq_('../equations/Equation') +, RotationalVelocityEquation = _dereq_('../equations/RotationalVelocityEquation') +, RotationalLockEquation = _dereq_('../equations/RotationalLockEquation') +, vec2 = _dereq_('../math/vec2'); + +module.exports = RevoluteConstraint; + +var worldPivotA = vec2.create(), + worldPivotB = vec2.create(), + xAxis = vec2.fromValues(1,0), + yAxis = vec2.fromValues(0,1), + g = vec2.create(); + +/** + * Connects two bodies at given offset points, letting them rotate relative to each other around this point. + * @class RevoluteConstraint + * @constructor + * @author schteppe + * @param {Body} bodyA + * @param {Body} bodyB + * @param {Object} [options] + * @param {Array} [options.worldPivot] A pivot point given in world coordinates. If specified, localPivotA and localPivotB are automatically computed from this value. + * @param {Array} [options.localPivotA] The point relative to the center of mass of bodyA which bodyA is constrained to. + * @param {Array} [options.localPivotB] See localPivotA. + * @param {Number} [options.maxForce] The maximum force that should be applied to constrain the bodies. + * @extends Constraint + * + * @example + * // This will create a revolute constraint between two bodies with pivot point in between them. + * var bodyA = new Body({ mass: 1, position: [-1, 0] }); + * var bodyB = new Body({ mass: 1, position: [1, 0] }); + * var constraint = new RevoluteConstraint(bodyA, bodyB, { + * worldPivot: [0, 0] + * }); + * world.addConstraint(constraint); + * + * // Using body-local pivot points, the constraint could have been constructed like this: + * var constraint = new RevoluteConstraint(bodyA, bodyB, { + * localPivotA: [1, 0], + * localPivotB: [-1, 0] + * }); + */ +function RevoluteConstraint(bodyA, bodyB, options){ + options = options || {}; + Constraint.call(this,bodyA,bodyB,Constraint.REVOLUTE,options); + + var maxForce = this.maxForce = typeof(options.maxForce) !== "undefined" ? options.maxForce : Number.MAX_VALUE; + + /** + * @property {Array} pivotA + */ + this.pivotA = vec2.create(); + + /** + * @property {Array} pivotB + */ + this.pivotB = vec2.create(); + + if(options.worldPivot){ + // Compute pivotA and pivotB + vec2.sub(this.pivotA, options.worldPivot, bodyA.position); + vec2.sub(this.pivotB, options.worldPivot, bodyB.position); + // Rotate to local coordinate system + vec2.rotate(this.pivotA, this.pivotA, -bodyA.angle); + vec2.rotate(this.pivotB, this.pivotB, -bodyB.angle); + } else { + // Get pivotA and pivotB + vec2.copy(this.pivotA, options.localPivotA); + vec2.copy(this.pivotB, options.localPivotB); + } + + // Equations to be fed to the solver + var eqs = this.equations = [ + new Equation(bodyA,bodyB,-maxForce,maxForce), + new Equation(bodyA,bodyB,-maxForce,maxForce), + ]; + + var x = eqs[0]; + var y = eqs[1]; + var that = this; + + x.computeGq = function(){ + vec2.rotate(worldPivotA, that.pivotA, bodyA.angle); + vec2.rotate(worldPivotB, that.pivotB, bodyB.angle); + vec2.add(g, bodyB.position, worldPivotB); + vec2.sub(g, g, bodyA.position); + vec2.sub(g, g, worldPivotA); + return vec2.dot(g,xAxis); + }; + + y.computeGq = function(){ + vec2.rotate(worldPivotA, that.pivotA, bodyA.angle); + vec2.rotate(worldPivotB, that.pivotB, bodyB.angle); + vec2.add(g, bodyB.position, worldPivotB); + vec2.sub(g, g, bodyA.position); + vec2.sub(g, g, worldPivotA); + return vec2.dot(g,yAxis); + }; + + y.minForce = x.minForce = -maxForce; + y.maxForce = x.maxForce = maxForce; + + this.motorEquation = new RotationalVelocityEquation(bodyA,bodyB); + + /** + * Indicates whether the motor is enabled. Use .enableMotor() to enable the constraint motor. + * @property {Boolean} motorEnabled + * @readOnly + */ + this.motorEnabled = false; + + /** + * The constraint position. + * @property angle + * @type {Number} + * @readOnly + */ + this.angle = 0; + + /** + * Set to true to enable lower limit + * @property lowerLimitEnabled + * @type {Boolean} + */ + this.lowerLimitEnabled = false; + + /** + * Set to true to enable upper limit + * @property upperLimitEnabled + * @type {Boolean} + */ + this.upperLimitEnabled = false; + + /** + * The lower limit on the constraint angle. + * @property lowerLimit + * @type {Boolean} + */ + this.lowerLimit = 0; + + /** + * The upper limit on the constraint angle. + * @property upperLimit + * @type {Boolean} + */ + this.upperLimit = 0; + + this.upperLimitEquation = new RotationalLockEquation(bodyA,bodyB); + this.lowerLimitEquation = new RotationalLockEquation(bodyA,bodyB); + this.upperLimitEquation.minForce = 0; + this.lowerLimitEquation.maxForce = 0; +} +RevoluteConstraint.prototype = new Constraint(); +RevoluteConstraint.prototype.constructor = RevoluteConstraint; + +/** + * Set the constraint angle limits. + * @method setLimits + * @param {number} lower Lower angle limit. + * @param {number} upper Upper angle limit. + */ +RevoluteConstraint.prototype.setLimits = function (lower, upper) { + if(typeof(lower) === 'number'){ + this.lowerLimit = lower; + this.lowerLimitEnabled = true; + } else { + this.lowerLimit = lower; + this.lowerLimitEnabled = false; + } + + if(typeof(upper) === 'number'){ + this.upperLimit = upper; + this.upperLimitEnabled = true; + } else { + this.upperLimit = upper; + this.upperLimitEnabled = false; + } +}; + +RevoluteConstraint.prototype.update = function(){ + var bodyA = this.bodyA, + bodyB = this.bodyB, + pivotA = this.pivotA, + pivotB = this.pivotB, + eqs = this.equations, + normal = eqs[0], + tangent= eqs[1], + x = eqs[0], + y = eqs[1], + upperLimit = this.upperLimit, + lowerLimit = this.lowerLimit, + upperLimitEquation = this.upperLimitEquation, + lowerLimitEquation = this.lowerLimitEquation; + + var relAngle = this.angle = bodyB.angle - bodyA.angle; + + if(this.upperLimitEnabled && relAngle > upperLimit){ + upperLimitEquation.angle = upperLimit; + if(eqs.indexOf(upperLimitEquation) === -1){ + eqs.push(upperLimitEquation); + } + } else { + var idx = eqs.indexOf(upperLimitEquation); + if(idx !== -1){ + eqs.splice(idx,1); + } + } + + if(this.lowerLimitEnabled && relAngle < lowerLimit){ + lowerLimitEquation.angle = lowerLimit; + if(eqs.indexOf(lowerLimitEquation) === -1){ + eqs.push(lowerLimitEquation); + } + } else { + var idx = eqs.indexOf(lowerLimitEquation); + if(idx !== -1){ + eqs.splice(idx,1); + } + } + + /* + + The constraint violation is + + g = xj + rj - xi - ri + + ...where xi and xj are the body positions and ri and rj world-oriented offset vectors. Differentiate: + + gdot = vj + wj x rj - vi - wi x ri + + We split this into x and y directions. (let x and y be unit vectors along the respective axes) + + gdot * x = ( vj + wj x rj - vi - wi x ri ) * x + = ( vj*x + (wj x rj)*x -vi*x -(wi x ri)*x + = ( vj*x + (rj x x)*wj -vi*x -(ri x x)*wi + = [ -x -(ri x x) x (rj x x)] * [vi wi vj wj] + = G*W + + ...and similar for y. We have then identified the jacobian entries for x and y directions: + + Gx = [ x (rj x x) -x -(ri x x)] + Gy = [ y (rj x y) -y -(ri x y)] + + */ + + vec2.rotate(worldPivotA, pivotA, bodyA.angle); + vec2.rotate(worldPivotB, pivotB, bodyB.angle); + + // todo: these are a bit sparse. We could save some computations on making custom eq.computeGW functions, etc + + x.G[0] = -1; + x.G[1] = 0; + x.G[2] = -vec2.crossLength(worldPivotA,xAxis); + x.G[3] = 1; + x.G[4] = 0; + x.G[5] = vec2.crossLength(worldPivotB,xAxis); + + y.G[0] = 0; + y.G[1] = -1; + y.G[2] = -vec2.crossLength(worldPivotA,yAxis); + y.G[3] = 0; + y.G[4] = 1; + y.G[5] = vec2.crossLength(worldPivotB,yAxis); +}; + +/** + * Enable the rotational motor + * @method enableMotor + */ +RevoluteConstraint.prototype.enableMotor = function(){ + if(this.motorEnabled){ + return; + } + this.equations.push(this.motorEquation); + this.motorEnabled = true; +}; + +/** + * Disable the rotational motor + * @method disableMotor + */ +RevoluteConstraint.prototype.disableMotor = function(){ + if(!this.motorEnabled){ + return; + } + var i = this.equations.indexOf(this.motorEquation); + this.equations.splice(i,1); + this.motorEnabled = false; +}; + +/** + * Check if the motor is enabled. + * @method motorIsEnabled + * @deprecated use property motorEnabled instead. + * @return {Boolean} + */ +RevoluteConstraint.prototype.motorIsEnabled = function(){ + return !!this.motorEnabled; +}; + +/** + * Set the speed of the rotational constraint motor + * @method setMotorSpeed + * @param {Number} speed + */ +RevoluteConstraint.prototype.setMotorSpeed = function(speed){ + if(!this.motorEnabled){ + return; + } + var i = this.equations.indexOf(this.motorEquation); + this.equations[i].relativeVelocity = speed; +}; + +/** + * Get the speed of the rotational constraint motor + * @method getMotorSpeed + * @return {Number} The current speed, or false if the motor is not enabled. + */ +RevoluteConstraint.prototype.getMotorSpeed = function(){ + if(!this.motorEnabled){ + return false; + } + return this.motorEquation.relativeVelocity; +}; + +},{"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../equations/RotationalVelocityEquation":25,"../math/vec2":30,"./Constraint":14}],20:[function(_dereq_,module,exports){ +var Equation = _dereq_("./Equation"), + vec2 = _dereq_('../math/vec2'); + +module.exports = AngleLockEquation; + +/** + * Locks the relative angle between two bodies. The constraint tries to keep the dot product between two vectors, local in each body, to zero. The local angle in body i is a parameter. + * + * @class AngleLockEquation + * @constructor + * @extends Equation + * @param {Body} bodyA + * @param {Body} bodyB + * @param {Object} [options] + * @param {Number} [options.angle] Angle to add to the local vector in body A. + * @param {Number} [options.ratio] Gear ratio + */ +function AngleLockEquation(bodyA, bodyB, options){ + options = options || {}; + Equation.call(this,bodyA,bodyB,-Number.MAX_VALUE,Number.MAX_VALUE); + this.angle = options.angle || 0; + + /** + * The gear ratio. + * @property {Number} ratio + * @private + * @see setRatio + */ + this.ratio = typeof(options.ratio)==="number" ? options.ratio : 1; + + this.setRatio(this.ratio); +} +AngleLockEquation.prototype = new Equation(); +AngleLockEquation.prototype.constructor = AngleLockEquation; + +AngleLockEquation.prototype.computeGq = function(){ + return this.ratio * this.bodyA.angle - this.bodyB.angle + this.angle; +}; + +/** + * Set the gear ratio for this equation + * @method setRatio + * @param {Number} ratio + */ +AngleLockEquation.prototype.setRatio = function(ratio){ + var G = this.G; + G[2] = ratio; + G[5] = -1; + this.ratio = ratio; +}; + +/** + * Set the max force for the equation. + * @method setMaxTorque + * @param {Number} torque + */ +AngleLockEquation.prototype.setMaxTorque = function(torque){ + this.maxForce = torque; + this.minForce = -torque; +}; + +},{"../math/vec2":30,"./Equation":22}],21:[function(_dereq_,module,exports){ +var Equation = _dereq_("./Equation"), + vec2 = _dereq_('../math/vec2'); + +module.exports = ContactEquation; + +/** + * Non-penetration constraint equation. Tries to make the contactPointA and contactPointB vectors coincide, while keeping the applied force repulsive. + * + * @class ContactEquation + * @constructor + * @extends Equation + * @param {Body} bodyA + * @param {Body} bodyB + */ +function ContactEquation(bodyA, bodyB){ + Equation.call(this, bodyA, bodyB, 0, Number.MAX_VALUE); + + /** + * Vector from body i center of mass to the contact point. + * @property contactPointA + * @type {Array} + */ + this.contactPointA = vec2.create(); + this.penetrationVec = vec2.create(); + + /** + * World-oriented vector from body A center of mass to the contact point. + * @property contactPointB + * @type {Array} + */ + this.contactPointB = vec2.create(); + + /** + * The normal vector, pointing out of body i + * @property normalA + * @type {Array} + */ + this.normalA = vec2.create(); + + /** + * The restitution to use (0=no bounciness, 1=max bounciness). + * @property restitution + * @type {Number} + */ + this.restitution = 0; + + /** + * This property is set to true if this is the first impact between the bodies (not persistant contact). + * @property firstImpact + * @type {Boolean} + * @readOnly + */ + this.firstImpact = false; + + /** + * The shape in body i that triggered this contact. + * @property shapeA + * @type {Shape} + */ + this.shapeA = null; + + /** + * The shape in body j that triggered this contact. + * @property shapeB + * @type {Shape} + */ + this.shapeB = null; +} +ContactEquation.prototype = new Equation(); +ContactEquation.prototype.constructor = ContactEquation; +ContactEquation.prototype.computeB = function(a,b,h){ + var bi = this.bodyA, + bj = this.bodyB, + ri = this.contactPointA, + rj = this.contactPointB, + xi = bi.position, + xj = bj.position; + + var penetrationVec = this.penetrationVec, + n = this.normalA, + G = this.G; + + // Caluclate cross products + var rixn = vec2.crossLength(ri,n), + rjxn = vec2.crossLength(rj,n); + + // G = [-n -rixn n rjxn] + G[0] = -n[0]; + G[1] = -n[1]; + G[2] = -rixn; + G[3] = n[0]; + G[4] = n[1]; + G[5] = rjxn; + + // Calculate q = xj+rj -(xi+ri) i.e. the penetration vector + vec2.add(penetrationVec,xj,rj); + vec2.sub(penetrationVec,penetrationVec,xi); + vec2.sub(penetrationVec,penetrationVec,ri); + + // Compute iteration + var GW, Gq; + if(this.firstImpact && this.restitution !== 0){ + Gq = 0; + GW = (1/b)*(1+this.restitution) * this.computeGW(); + } else { + Gq = vec2.dot(n,penetrationVec) + this.offset; + GW = this.computeGW(); + } + + var GiMf = this.computeGiMf(); + var B = - Gq * a - GW * b - h*GiMf; + + return B; +}; + +},{"../math/vec2":30,"./Equation":22}],22:[function(_dereq_,module,exports){ +module.exports = Equation; + +var vec2 = _dereq_('../math/vec2'), + Utils = _dereq_('../utils/Utils'), + Body = _dereq_('../objects/Body'); + +/** + * Base class for constraint equations. + * @class Equation + * @constructor + * @param {Body} bodyA First body participating in the equation + * @param {Body} bodyB Second body participating in the equation + * @param {number} minForce Minimum force to apply. Default: -Number.MAX_VALUE + * @param {number} maxForce Maximum force to apply. Default: Number.MAX_VALUE + */ +function Equation(bodyA, bodyB, minForce, maxForce){ + + /** + * Minimum force to apply when solving. + * @property minForce + * @type {Number} + */ + this.minForce = typeof(minForce)==="undefined" ? -Number.MAX_VALUE : minForce; + + /** + * Max force to apply when solving. + * @property maxForce + * @type {Number} + */ + this.maxForce = typeof(maxForce)==="undefined" ? Number.MAX_VALUE : maxForce; + + /** + * First body participating in the constraint + * @property bodyA + * @type {Body} + */ + this.bodyA = bodyA; + + /** + * Second body participating in the constraint + * @property bodyB + * @type {Body} + */ + this.bodyB = bodyB; + + /** + * The stiffness of this equation. Typically chosen to a large number (~1e7), but can be chosen somewhat freely to get a stable simulation. + * @property stiffness + * @type {Number} + */ + this.stiffness = Equation.DEFAULT_STIFFNESS; + + /** + * The number of time steps needed to stabilize the constraint equation. Typically between 3 and 5 time steps. + * @property relaxation + * @type {Number} + */ + this.relaxation = Equation.DEFAULT_RELAXATION; + + /** + * The Jacobian entry of this equation. 6 numbers, 3 per body (x,y,angle). + * @property G + * @type {Array} + */ + this.G = new Utils.ARRAY_TYPE(6); + for(var i=0; i<6; i++){ + this.G[i]=0; + } + + this.offset = 0; + + this.a = 0; + this.b = 0; + this.epsilon = 0; + this.timeStep = 1/60; + + /** + * Indicates if stiffness or relaxation was changed. + * @property {Boolean} needsUpdate + */ + this.needsUpdate = true; + + /** + * The resulting constraint multiplier from the last solve. This is mostly equivalent to the force produced by the constraint. + * @property multiplier + * @type {Number} + */ + this.multiplier = 0; + + /** + * Relative velocity. + * @property {Number} relativeVelocity + */ + this.relativeVelocity = 0; + + /** + * Whether this equation is enabled or not. If true, it will be added to the solver. + * @property {Boolean} enabled + */ + this.enabled = true; +} +Equation.prototype.constructor = Equation; + +/** + * The default stiffness when creating a new Equation. + * @static + * @property {Number} DEFAULT_STIFFNESS + * @default 1e6 + */ +Equation.DEFAULT_STIFFNESS = 1e6; + +/** + * The default relaxation when creating a new Equation. + * @static + * @property {Number} DEFAULT_RELAXATION + * @default 4 + */ +Equation.DEFAULT_RELAXATION = 4; + +/** + * Compute SPOOK parameters .a, .b and .epsilon according to the current parameters. See equations 9, 10 and 11 in the SPOOK notes. + * @method update + */ +Equation.prototype.update = function(){ + var k = this.stiffness, + d = this.relaxation, + h = this.timeStep; + + this.a = 4.0 / (h * (1 + 4 * d)); + this.b = (4.0 * d) / (1 + 4 * d); + this.epsilon = 4.0 / (h * h * k * (1 + 4 * d)); + + this.needsUpdate = false; +}; + +/** + * Multiply a jacobian entry with corresponding positions or velocities + * @method gmult + * @return {Number} + */ +Equation.prototype.gmult = function(G,vi,wi,vj,wj){ + return G[0] * vi[0] + + G[1] * vi[1] + + G[2] * wi + + G[3] * vj[0] + + G[4] * vj[1] + + G[5] * wj; +}; + +/** + * Computes the RHS of the SPOOK equation + * @method computeB + * @return {Number} + */ +Equation.prototype.computeB = function(a,b,h){ + var GW = this.computeGW(); + var Gq = this.computeGq(); + var GiMf = this.computeGiMf(); + return - Gq * a - GW * b - GiMf*h; +}; + +/** + * Computes G\*q, where q are the generalized body coordinates + * @method computeGq + * @return {Number} + */ +var qi = vec2.create(), + qj = vec2.create(); +Equation.prototype.computeGq = function(){ + var G = this.G, + bi = this.bodyA, + bj = this.bodyB, + xi = bi.position, + xj = bj.position, + ai = bi.angle, + aj = bj.angle; + + return this.gmult(G, qi, ai, qj, aj) + this.offset; +}; + +/** + * Computes G\*W, where W are the body velocities + * @method computeGW + * @return {Number} + */ +Equation.prototype.computeGW = function(){ + var G = this.G, + bi = this.bodyA, + bj = this.bodyB, + vi = bi.velocity, + vj = bj.velocity, + wi = bi.angularVelocity, + wj = bj.angularVelocity; + return this.gmult(G,vi,wi,vj,wj) + this.relativeVelocity; +}; + +/** + * Computes G\*Wlambda, where W are the body velocities + * @method computeGWlambda + * @return {Number} + */ +Equation.prototype.computeGWlambda = function(){ + var G = this.G, + bi = this.bodyA, + bj = this.bodyB, + vi = bi.vlambda, + vj = bj.vlambda, + wi = bi.wlambda, + wj = bj.wlambda; + return this.gmult(G,vi,wi,vj,wj); +}; + +/** + * Computes G\*inv(M)\*f, where M is the mass matrix with diagonal blocks for each body, and f are the forces on the bodies. + * @method computeGiMf + * @return {Number} + */ +var iMfi = vec2.create(), + iMfj = vec2.create(); +Equation.prototype.computeGiMf = function(){ + var bi = this.bodyA, + bj = this.bodyB, + fi = bi.force, + ti = bi.angularForce, + fj = bj.force, + tj = bj.angularForce, + invMassi = bi.invMassSolve, + invMassj = bj.invMassSolve, + invIi = bi.invInertiaSolve, + invIj = bj.invInertiaSolve, + G = this.G; + + vec2.scale(iMfi, fi, invMassi); + vec2.multiply(iMfi, bi.massMultiplier, iMfi); + vec2.scale(iMfj, fj,invMassj); + vec2.multiply(iMfj, bj.massMultiplier, iMfj); + + return this.gmult(G,iMfi,ti*invIi,iMfj,tj*invIj); +}; + +/** + * Computes G\*inv(M)\*G' + * @method computeGiMGt + * @return {Number} + */ +Equation.prototype.computeGiMGt = function(){ + var bi = this.bodyA, + bj = this.bodyB, + invMassi = bi.invMassSolve, + invMassj = bj.invMassSolve, + invIi = bi.invInertiaSolve, + invIj = bj.invInertiaSolve, + G = this.G; + + return G[0] * G[0] * invMassi * bi.massMultiplier[0] + + G[1] * G[1] * invMassi * bi.massMultiplier[1] + + G[2] * G[2] * invIi + + G[3] * G[3] * invMassj * bj.massMultiplier[0] + + G[4] * G[4] * invMassj * bj.massMultiplier[1] + + G[5] * G[5] * invIj; +}; + +var addToWlambda_temp = vec2.create(), + addToWlambda_Gi = vec2.create(), + addToWlambda_Gj = vec2.create(), + addToWlambda_ri = vec2.create(), + addToWlambda_rj = vec2.create(), + addToWlambda_Mdiag = vec2.create(); + +/** + * Add constraint velocity to the bodies. + * @method addToWlambda + * @param {Number} deltalambda + */ +Equation.prototype.addToWlambda = function(deltalambda){ + var bi = this.bodyA, + bj = this.bodyB, + temp = addToWlambda_temp, + Gi = addToWlambda_Gi, + Gj = addToWlambda_Gj, + ri = addToWlambda_ri, + rj = addToWlambda_rj, + invMassi = bi.invMassSolve, + invMassj = bj.invMassSolve, + invIi = bi.invInertiaSolve, + invIj = bj.invInertiaSolve, + Mdiag = addToWlambda_Mdiag, + G = this.G; + + Gi[0] = G[0]; + Gi[1] = G[1]; + Gj[0] = G[3]; + Gj[1] = G[4]; + + // Add to linear velocity + // v_lambda += inv(M) * delta_lamba * G + vec2.scale(temp, Gi, invMassi*deltalambda); + vec2.multiply(temp, temp, bi.massMultiplier); + vec2.add( bi.vlambda, bi.vlambda, temp); + // This impulse is in the offset frame + // Also add contribution to angular + //bi.wlambda -= vec2.crossLength(temp,ri); + bi.wlambda += invIi * G[2] * deltalambda; + + + vec2.scale(temp, Gj, invMassj*deltalambda); + vec2.multiply(temp, temp, bj.massMultiplier); + vec2.add( bj.vlambda, bj.vlambda, temp); + //bj.wlambda -= vec2.crossLength(temp,rj); + bj.wlambda += invIj * G[5] * deltalambda; +}; + +/** + * Compute the denominator part of the SPOOK equation: C = G\*inv(M)\*G' + eps + * @method computeInvC + * @param {Number} eps + * @return {Number} + */ +Equation.prototype.computeInvC = function(eps){ + return 1.0 / (this.computeGiMGt() + eps); +}; + +},{"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],23:[function(_dereq_,module,exports){ +var vec2 = _dereq_('../math/vec2') +, Equation = _dereq_('./Equation') +, Utils = _dereq_('../utils/Utils'); + +module.exports = FrictionEquation; + +/** + * Constrains the slipping in a contact along a tangent + * + * @class FrictionEquation + * @constructor + * @param {Body} bodyA + * @param {Body} bodyB + * @param {Number} slipForce + * @extends Equation + */ +function FrictionEquation(bodyA, bodyB, slipForce){ + Equation.call(this, bodyA, bodyB, -slipForce, slipForce); + + /** + * Relative vector from center of body A to the contact point, world oriented. + * @property contactPointA + * @type {Array} + */ + this.contactPointA = vec2.create(); + + /** + * Relative vector from center of body B to the contact point, world oriented. + * @property contactPointB + * @type {Array} + */ + this.contactPointB = vec2.create(); + + /** + * Tangent vector that the friction force will act along. World oriented. + * @property t + * @type {Array} + */ + this.t = vec2.create(); + + /** + * ContactEquations connected to this friction equation. The contact equations can be used to rescale the max force for the friction. If more than one contact equation is given, then the max force can be set to the average. + * @property contactEquations + * @type {ContactEquation} + */ + this.contactEquations = []; + + /** + * The shape in body i that triggered this friction. + * @property shapeA + * @type {Shape} + * @todo Needed? The shape can be looked up via contactEquation.shapeA... + */ + this.shapeA = null; + + /** + * The shape in body j that triggered this friction. + * @property shapeB + * @type {Shape} + * @todo Needed? The shape can be looked up via contactEquation.shapeB... + */ + this.shapeB = null; + + /** + * The friction coefficient to use. + * @property frictionCoefficient + * @type {Number} + */ + this.frictionCoefficient = 0.3; +} +FrictionEquation.prototype = new Equation(); +FrictionEquation.prototype.constructor = FrictionEquation; + +/** + * Set the slipping condition for the constraint. The friction force cannot be + * larger than this value. + * @method setSlipForce + * @param {Number} slipForce + */ +FrictionEquation.prototype.setSlipForce = function(slipForce){ + this.maxForce = slipForce; + this.minForce = -slipForce; +}; + +/** + * Get the max force for the constraint. + * @method getSlipForce + * @return {Number} + */ +FrictionEquation.prototype.getSlipForce = function(){ + return this.maxForce; +}; + +FrictionEquation.prototype.computeB = function(a,b,h){ + var bi = this.bodyA, + bj = this.bodyB, + ri = this.contactPointA, + rj = this.contactPointB, + t = this.t, + G = this.G; + + // G = [-t -rixt t rjxt] + // And remember, this is a pure velocity constraint, g is always zero! + G[0] = -t[0]; + G[1] = -t[1]; + G[2] = -vec2.crossLength(ri,t); + G[3] = t[0]; + G[4] = t[1]; + G[5] = vec2.crossLength(rj,t); + + var GW = this.computeGW(), + GiMf = this.computeGiMf(); + + var B = /* - g * a */ - GW * b - h*GiMf; + + return B; +}; + +},{"../math/vec2":30,"../utils/Utils":57,"./Equation":22}],24:[function(_dereq_,module,exports){ +var Equation = _dereq_("./Equation"), + vec2 = _dereq_('../math/vec2'); + +module.exports = RotationalLockEquation; + +/** + * Locks the relative angle between two bodies. The constraint tries to keep the dot product between two vectors, local in each body, to zero. The local angle in body i is a parameter. + * + * @class RotationalLockEquation + * @constructor + * @extends Equation + * @param {Body} bodyA + * @param {Body} bodyB + * @param {Object} [options] + * @param {Number} [options.angle] Angle to add to the local vector in bodyA. + */ +function RotationalLockEquation(bodyA, bodyB, options){ + options = options || {}; + Equation.call(this, bodyA, bodyB, -Number.MAX_VALUE, Number.MAX_VALUE); + + /** + * @property {number} angle + */ + this.angle = options.angle || 0; + + var G = this.G; + G[2] = 1; + G[5] = -1; +} +RotationalLockEquation.prototype = new Equation(); +RotationalLockEquation.prototype.constructor = RotationalLockEquation; + +var worldVectorA = vec2.create(), + worldVectorB = vec2.create(), + xAxis = vec2.fromValues(1,0), + yAxis = vec2.fromValues(0,1); +RotationalLockEquation.prototype.computeGq = function(){ + vec2.rotate(worldVectorA,xAxis,this.bodyA.angle+this.angle); + vec2.rotate(worldVectorB,yAxis,this.bodyB.angle); + return vec2.dot(worldVectorA,worldVectorB); +}; + +},{"../math/vec2":30,"./Equation":22}],25:[function(_dereq_,module,exports){ +var Equation = _dereq_("./Equation"), + vec2 = _dereq_('../math/vec2'); + +module.exports = RotationalVelocityEquation; + +/** + * Syncs rotational velocity of two bodies, or sets a relative velocity (motor). + * + * @class RotationalVelocityEquation + * @constructor + * @extends Equation + * @param {Body} bodyA + * @param {Body} bodyB + */ +function RotationalVelocityEquation(bodyA, bodyB){ + Equation.call(this, bodyA, bodyB, -Number.MAX_VALUE, Number.MAX_VALUE); + this.relativeVelocity = 1; + this.ratio = 1; +} +RotationalVelocityEquation.prototype = new Equation(); +RotationalVelocityEquation.prototype.constructor = RotationalVelocityEquation; +RotationalVelocityEquation.prototype.computeB = function(a,b,h){ + var G = this.G; + G[2] = -1; + G[5] = this.ratio; + + var GiMf = this.computeGiMf(); + var GW = this.computeGW(); + var B = - GW * b - h*GiMf; + + return B; +}; + +},{"../math/vec2":30,"./Equation":22}],26:[function(_dereq_,module,exports){ +/** + * Base class for objects that dispatches events. + * @class EventEmitter + * @constructor + */ +var EventEmitter = function () {}; + +module.exports = EventEmitter; + +EventEmitter.prototype = { + constructor: EventEmitter, + + /** + * Add an event listener + * @method on + * @param {String} type + * @param {Function} listener + * @return {EventEmitter} The self object, for chainability. + */ + on: function ( type, listener, context ) { + listener.context = context || this; + if ( this._listeners === undefined ){ + this._listeners = {}; + } + var listeners = this._listeners; + if ( listeners[ type ] === undefined ) { + listeners[ type ] = []; + } + if ( listeners[ type ].indexOf( listener ) === - 1 ) { + listeners[ type ].push( listener ); + } + return this; + }, + + /** + * Check if an event listener is added + * @method has + * @param {String} type + * @param {Function} listener + * @return {Boolean} + */ + has: function ( type, listener ) { + if ( this._listeners === undefined ){ + return false; + } + var listeners = this._listeners; + if(listener){ + if ( listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1 ) { + return true; + } + } else { + if ( listeners[ type ] !== undefined ) { + return true; + } + } + + return false; + }, + + /** + * Remove an event listener + * @method off + * @param {String} type + * @param {Function} listener + * @return {EventEmitter} The self object, for chainability. + */ + off: function ( type, listener ) { + if ( this._listeners === undefined ){ + return this; + } + var listeners = this._listeners; + var index = listeners[ type ].indexOf( listener ); + if ( index !== - 1 ) { + listeners[ type ].splice( index, 1 ); + } + return this; + }, + + /** + * Emit an event. + * @method emit + * @param {Object} event + * @param {String} event.type + * @return {EventEmitter} The self object, for chainability. + */ + emit: function ( event ) { + if ( this._listeners === undefined ){ + return this; + } + var listeners = this._listeners; + var listenerArray = listeners[ event.type ]; + if ( listenerArray !== undefined ) { + event.target = this; + for ( var i = 0, l = listenerArray.length; i < l; i ++ ) { + var listener = listenerArray[ i ]; + listener.call( listener.context, event ); + } + } + return this; + } +}; + +},{}],27:[function(_dereq_,module,exports){ +var Material = _dereq_('./Material'); +var Equation = _dereq_('../equations/Equation'); + +module.exports = ContactMaterial; + +/** + * Defines what happens when two materials meet, such as what friction coefficient to use. You can also set other things such as restitution, surface velocity and constraint parameters. + * @class ContactMaterial + * @constructor + * @param {Material} materialA + * @param {Material} materialB + * @param {Object} [options] + * @param {Number} [options.friction=0.3] Friction coefficient. + * @param {Number} [options.restitution=0] Restitution coefficient aka "bounciness". + * @param {Number} [options.stiffness] ContactEquation stiffness. + * @param {Number} [options.relaxation] ContactEquation relaxation. + * @param {Number} [options.frictionStiffness] FrictionEquation stiffness. + * @param {Number} [options.frictionRelaxation] FrictionEquation relaxation. + * @param {Number} [options.surfaceVelocity=0] Surface velocity. + * @author schteppe + */ +function ContactMaterial(materialA, materialB, options){ + options = options || {}; + + if(!(materialA instanceof Material) || !(materialB instanceof Material)){ + throw new Error("First two arguments must be Material instances."); + } + + /** + * The contact material identifier + * @property id + * @type {Number} + */ + this.id = ContactMaterial.idCounter++; + + /** + * First material participating in the contact material + * @property materialA + * @type {Material} + */ + this.materialA = materialA; + + /** + * Second material participating in the contact material + * @property materialB + * @type {Material} + */ + this.materialB = materialB; + + /** + * Friction to use in the contact of these two materials + * @property friction + * @type {Number} + */ + this.friction = typeof(options.friction) !== "undefined" ? Number(options.friction) : 0.3; + + /** + * Restitution to use in the contact of these two materials + * @property restitution + * @type {Number} + */ + this.restitution = typeof(options.restitution) !== "undefined" ? Number(options.restitution) : 0.0; + + /** + * Stiffness of the resulting ContactEquation that this ContactMaterial generate + * @property stiffness + * @type {Number} + */ + this.stiffness = typeof(options.stiffness) !== "undefined" ? Number(options.stiffness) : Equation.DEFAULT_STIFFNESS; + + /** + * Relaxation of the resulting ContactEquation that this ContactMaterial generate + * @property relaxation + * @type {Number} + */ + this.relaxation = typeof(options.relaxation) !== "undefined" ? Number(options.relaxation) : Equation.DEFAULT_RELAXATION; + + /** + * Stiffness of the resulting FrictionEquation that this ContactMaterial generate + * @property frictionStiffness + * @type {Number} + */ + this.frictionStiffness = typeof(options.frictionStiffness) !== "undefined" ? Number(options.frictionStiffness) : Equation.DEFAULT_STIFFNESS; + + /** + * Relaxation of the resulting FrictionEquation that this ContactMaterial generate + * @property frictionRelaxation + * @type {Number} + */ + this.frictionRelaxation = typeof(options.frictionRelaxation) !== "undefined" ? Number(options.frictionRelaxation) : Equation.DEFAULT_RELAXATION; + + /** + * Will add surface velocity to this material. If bodyA rests on top if bodyB, and the surface velocity is positive, bodyA will slide to the right. + * @property {Number} surfaceVelocity + */ + this.surfaceVelocity = typeof(options.surfaceVelocity) !== "undefined" ? Number(options.surfaceVelocity) : 0; + + /** + * Offset to be set on ContactEquations. A positive value will make the bodies penetrate more into each other. Can be useful in scenes where contacts need to be more persistent, for example when stacking. Aka "cure for nervous contacts". + * @property contactSkinSize + * @type {Number} + */ + this.contactSkinSize = 0.005; +} + +ContactMaterial.idCounter = 0; + +},{"../equations/Equation":22,"./Material":28}],28:[function(_dereq_,module,exports){ +module.exports = Material; + +/** + * Defines a physics material. + * @class Material + * @constructor + * @param {number} id Material identifier + * @author schteppe + */ +function Material(id){ + /** + * The material identifier + * @property id + * @type {Number} + */ + this.id = id || Material.idCounter++; +} + +Material.idCounter = 0; + +},{}],29:[function(_dereq_,module,exports){ + + /* + PolyK library + url: http://polyk.ivank.net + Released under MIT licence. + + Copyright (c) 2012 Ivan Kuckir + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + */ + + var PolyK = {}; + + /* + Is Polygon self-intersecting? + + O(n^2) + */ + /* + PolyK.IsSimple = function(p) + { + var n = p.length>>1; + if(n<4) return true; + var a1 = new PolyK._P(), a2 = new PolyK._P(); + var b1 = new PolyK._P(), b2 = new PolyK._P(); + var c = new PolyK._P(); + + for(var i=0; i>1; + if(n<3) return []; + var tgs = []; + var avl = []; + for(var i=0; i 3) + { + var i0 = avl[(i+0)%al]; + var i1 = avl[(i+1)%al]; + var i2 = avl[(i+2)%al]; + + var ax = p[2*i0], ay = p[2*i0+1]; + var bx = p[2*i1], by = p[2*i1+1]; + var cx = p[2*i2], cy = p[2*i2+1]; + + var earFound = false; + if(PolyK._convex(ax, ay, bx, by, cx, cy)) + { + earFound = true; + for(var j=0; j 3*al) break; // no convex angles :( + } + tgs.push(avl[0], avl[1], avl[2]); + return tgs; + } + /* + PolyK.ContainsPoint = function(p, px, py) + { + var n = p.length>>1; + var ax, ay, bx = p[2*n-2]-px, by = p[2*n-1]-py; + var depth = 0; + for(var i=0; i=0 && by>=0) continue; // both "up" or both "donw" + if(ax< 0 && bx< 0) continue; + + var lx = ax + (bx-ax)*(-ay)/(by-ay); + if(lx>0) depth++; + } + return (depth & 1) == 1; + } + + PolyK.Slice = function(p, ax, ay, bx, by) + { + if(PolyK.ContainsPoint(p, ax, ay) || PolyK.ContainsPoint(p, bx, by)) return [p.slice(0)]; + + var a = new PolyK._P(ax, ay); + var b = new PolyK._P(bx, by); + var iscs = []; // intersections + var ps = []; // points + for(var i=0; i 0) + { + var n = ps.length; + var i0 = iscs[0]; + var i1 = iscs[1]; + var ind0 = ps.indexOf(i0); + var ind1 = ps.indexOf(i1); + var solved = false; + + if(PolyK._firstWithFlag(ps, ind0) == ind1) solved = true; + else + { + i0 = iscs[1]; + i1 = iscs[0]; + ind0 = ps.indexOf(i0); + ind1 = ps.indexOf(i1); + if(PolyK._firstWithFlag(ps, ind0) == ind1) solved = true; + } + if(solved) + { + dir--; + var pgn = PolyK._getPoints(ps, ind0, ind1); + pgs.push(pgn); + ps = PolyK._getPoints(ps, ind1, ind0); + i0.flag = i1.flag = false; + iscs.splice(0,2); + if(iscs.length == 0) pgs.push(ps); + } + else { dir++; iscs.reverse(); } + if(dir>1) break; + } + var result = []; + for(var i=0; i>1, isc); + } + b1.x = b2.x; b1.y = b2.y; + b2.x = p[0]; b2.y = p[1]; + PolyK._pointLineDist(a1, b1, b2, l>>1, isc); + + var idst = 1/isc.dist; + isc.norm.x = (x-isc.point.x)*idst; + isc.norm.y = (y-isc.point.y)*idst; + return isc; + } + + PolyK._pointLineDist = function(p, a, b, edge, isc) + { + var x = p.x, y = p.y, x1 = a.x, y1 = a.y, x2 = b.x, y2 = b.y; + + var A = x - x1; + var B = y - y1; + var C = x2 - x1; + var D = y2 - y1; + + var dot = A * C + B * D; + var len_sq = C * C + D * D; + var param = dot / len_sq; + + var xx, yy; + + if (param < 0 || (x1 == x2 && y1 == y2)) { + xx = x1; + yy = y1; + } + else if (param > 1) { + xx = x2; + yy = y2; + } + else { + xx = x1 + param * C; + yy = y1 + param * D; + } + + var dx = x - xx; + var dy = y - yy; + var dst = Math.sqrt(dx * dx + dy * dy); + if(dst= 0) && (v >= 0) && (u + v < 1); + } + /* + PolyK._RayLineIntersection = function(a1, a2, b1, b2, c) + { + var dax = (a1.x-a2.x), dbx = (b1.x-b2.x); + var day = (a1.y-a2.y), dby = (b1.y-b2.y); + + var Den = dax*dby - day*dbx; + if (Den == 0) return null; // parallel + + var A = (a1.x * a2.y - a1.y * a2.x); + var B = (b1.x * b2.y - b1.y * b2.x); + + var I = c; + var iDen = 1/Den; + I.x = ( A*dbx - dax*B ) * iDen; + I.y = ( A*dby - day*B ) * iDen; + + if(!PolyK._InRect(I, b1, b2)) return null; + if((day>0 && I.y>a1.y) || (day<0 && I.y0 && I.x>a1.x) || (dax<0 && I.x=Math.min(b.y, c.y) && a.y<=Math.max(b.y, c.y)); + if (b.y == c.y) return (a.x>=Math.min(b.x, c.x) && a.x<=Math.max(b.x, c.x)); + + if(a.x >= Math.min(b.x, c.x) && a.x <= Math.max(b.x, c.x) + && a.y >= Math.min(b.y, c.y) && a.y <= Math.max(b.y, c.y)) + return true; + return false; + } + */ + PolyK._convex = function(ax, ay, bx, by, cx, cy) + { + return (ay-by)*(cx-bx) + (bx-ax)*(cy-by) >= 0; + } + /* + PolyK._P = function(x,y) + { + this.x = x; + this.y = y; + this.flag = false; + } + PolyK._P.prototype.toString = function() + { + return "Point ["+this.x+", "+this.y+"]"; + } + PolyK._P.dist = function(a,b) + { + var dx = b.x-a.x; + var dy = b.y-a.y; + return Math.sqrt(dx*dx + dy*dy); + } + + PolyK._tp = []; + for(var i=0; i<10; i++) PolyK._tp.push(new PolyK._P(0,0)); + */ + +module.exports = PolyK; + +},{}],30:[function(_dereq_,module,exports){ +/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + +/** + * The vec2 object from glMatrix, with some extensions and some removed methods. See http://glmatrix.net. + * @class vec2 + */ + +var vec2 = module.exports = {}; + +var Utils = _dereq_('../utils/Utils'); + +/** + * Make a cross product and only return the z component + * @method crossLength + * @static + * @param {Array} a + * @param {Array} b + * @return {Number} + */ +vec2.crossLength = function(a,b){ + return a[0] * b[1] - a[1] * b[0]; +}; + +/** + * Cross product between a vector and the Z component of a vector + * @method crossVZ + * @static + * @param {Array} out + * @param {Array} vec + * @param {Number} zcomp + * @return {Number} + */ +vec2.crossVZ = function(out, vec, zcomp){ + vec2.rotate(out,vec,-Math.PI/2);// Rotate according to the right hand rule + vec2.scale(out,out,zcomp); // Scale with z + return out; +}; + +/** + * Cross product between a vector and the Z component of a vector + * @method crossZV + * @static + * @param {Array} out + * @param {Number} zcomp + * @param {Array} vec + * @return {Number} + */ +vec2.crossZV = function(out, zcomp, vec){ + vec2.rotate(out,vec,Math.PI/2); // Rotate according to the right hand rule + vec2.scale(out,out,zcomp); // Scale with z + return out; +}; + +/** + * Rotate a vector by an angle + * @method rotate + * @static + * @param {Array} out + * @param {Array} a + * @param {Number} angle + */ +vec2.rotate = function(out,a,angle){ + if(angle !== 0){ + var c = Math.cos(angle), + s = Math.sin(angle), + x = a[0], + y = a[1]; + out[0] = c*x -s*y; + out[1] = s*x +c*y; + } else { + out[0] = a[0]; + out[1] = a[1]; + } +}; + +/** + * Rotate a vector 90 degrees clockwise + * @method rotate90cw + * @static + * @param {Array} out + * @param {Array} a + * @param {Number} angle + */ +vec2.rotate90cw = function(out, a) { + var x = a[0]; + var y = a[1]; + out[0] = y; + out[1] = -x; +}; + +/** + * Transform a point position to local frame. + * @method toLocalFrame + * @param {Array} out + * @param {Array} worldPoint + * @param {Array} framePosition + * @param {Number} frameAngle + */ +vec2.toLocalFrame = function(out, worldPoint, framePosition, frameAngle){ + vec2.copy(out, worldPoint); + vec2.sub(out, out, framePosition); + vec2.rotate(out, out, -frameAngle); +}; + +/** + * Transform a point position to global frame. + * @method toGlobalFrame + * @param {Array} out + * @param {Array} localPoint + * @param {Array} framePosition + * @param {Number} frameAngle + */ +vec2.toGlobalFrame = function(out, localPoint, framePosition, frameAngle){ + vec2.copy(out, localPoint); + vec2.rotate(out, out, frameAngle); + vec2.add(out, out, framePosition); +}; + +/** + * Transform a vector to local frame. + * @method vectorToLocalFrame + * @param {Array} out + * @param {Array} worldVector + * @param {Number} frameAngle + */ +vec2.vectorToLocalFrame = function(out, worldVector, frameAngle){ + vec2.rotate(out, worldVector, -frameAngle); +}; + +/** + * Transform a point position to global frame. + * @method toGlobalFrame + * @param {Array} out + * @param {Array} localVector + * @param {Number} frameAngle + */ +vec2.vectorToGlobalFrame = function(out, localVector, frameAngle){ + vec2.rotate(out, localVector, frameAngle); +}; + +/** + * Compute centroid of a triangle spanned by vectors a,b,c. See http://easycalculation.com/analytical/learn-centroid.php + * @method centroid + * @static + * @param {Array} out + * @param {Array} a + * @param {Array} b + * @param {Array} c + * @return {Array} The out object + */ +vec2.centroid = function(out, a, b, c){ + vec2.add(out, a, b); + vec2.add(out, out, c); + vec2.scale(out, out, 1/3); + return out; +}; + +/** + * Creates a new, empty vec2 + * @static + * @method create + * @return {Array} a new 2D vector + */ +vec2.create = function() { + var out = new Utils.ARRAY_TYPE(2); + out[0] = 0; + out[1] = 0; + return out; +}; + +/** + * Creates a new vec2 initialized with values from an existing vector + * @static + * @method clone + * @param {Array} a vector to clone + * @return {Array} a new 2D vector + */ +vec2.clone = function(a) { + var out = new Utils.ARRAY_TYPE(2); + out[0] = a[0]; + out[1] = a[1]; + return out; +}; + +/** + * Creates a new vec2 initialized with the given values + * @static + * @method fromValues + * @param {Number} x X component + * @param {Number} y Y component + * @return {Array} a new 2D vector + */ +vec2.fromValues = function(x, y) { + var out = new Utils.ARRAY_TYPE(2); + out[0] = x; + out[1] = y; + return out; +}; + +/** + * Copy the values from one vec2 to another + * @static + * @method copy + * @param {Array} out the receiving vector + * @param {Array} a the source vector + * @return {Array} out + */ +vec2.copy = function(out, a) { + out[0] = a[0]; + out[1] = a[1]; + return out; +}; + +/** + * Set the components of a vec2 to the given values + * @static + * @method set + * @param {Array} out the receiving vector + * @param {Number} x X component + * @param {Number} y Y component + * @return {Array} out + */ +vec2.set = function(out, x, y) { + out[0] = x; + out[1] = y; + return out; +}; + +/** + * Adds two vec2's + * @static + * @method add + * @param {Array} out the receiving vector + * @param {Array} a the first operand + * @param {Array} b the second operand + * @return {Array} out + */ +vec2.add = function(out, a, b) { + out[0] = a[0] + b[0]; + out[1] = a[1] + b[1]; + return out; +}; + +/** + * Subtracts two vec2's + * @static + * @method subtract + * @param {Array} out the receiving vector + * @param {Array} a the first operand + * @param {Array} b the second operand + * @return {Array} out + */ +vec2.subtract = function(out, a, b) { + out[0] = a[0] - b[0]; + out[1] = a[1] - b[1]; + return out; +}; + +/** + * Alias for vec2.subtract + * @static + * @method sub + */ +vec2.sub = vec2.subtract; + +/** + * Multiplies two vec2's + * @static + * @method multiply + * @param {Array} out the receiving vector + * @param {Array} a the first operand + * @param {Array} b the second operand + * @return {Array} out + */ +vec2.multiply = function(out, a, b) { + out[0] = a[0] * b[0]; + out[1] = a[1] * b[1]; + return out; +}; + +/** + * Alias for vec2.multiply + * @static + * @method mul + */ +vec2.mul = vec2.multiply; + +/** + * Divides two vec2's + * @static + * @method divide + * @param {Array} out the receiving vector + * @param {Array} a the first operand + * @param {Array} b the second operand + * @return {Array} out + */ +vec2.divide = function(out, a, b) { + out[0] = a[0] / b[0]; + out[1] = a[1] / b[1]; + return out; +}; + +/** + * Alias for vec2.divide + * @static + * @method div + */ +vec2.div = vec2.divide; + +/** + * Scales a vec2 by a scalar number + * @static + * @method scale + * @param {Array} out the receiving vector + * @param {Array} a the vector to scale + * @param {Number} b amount to scale the vector by + * @return {Array} out + */ +vec2.scale = function(out, a, b) { + out[0] = a[0] * b; + out[1] = a[1] * b; + return out; +}; + +/** + * Calculates the euclidian distance between two vec2's + * @static + * @method distance + * @param {Array} a the first operand + * @param {Array} b the second operand + * @return {Number} distance between a and b + */ +vec2.distance = function(a, b) { + var x = b[0] - a[0], + y = b[1] - a[1]; + return Math.sqrt(x*x + y*y); +}; + +/** + * Alias for vec2.distance + * @static + * @method dist + */ +vec2.dist = vec2.distance; + +/** + * Calculates the squared euclidian distance between two vec2's + * @static + * @method squaredDistance + * @param {Array} a the first operand + * @param {Array} b the second operand + * @return {Number} squared distance between a and b + */ +vec2.squaredDistance = function(a, b) { + var x = b[0] - a[0], + y = b[1] - a[1]; + return x*x + y*y; +}; + +/** + * Alias for vec2.squaredDistance + * @static + * @method sqrDist + */ +vec2.sqrDist = vec2.squaredDistance; + +/** + * Calculates the length of a vec2 + * @static + * @method length + * @param {Array} a vector to calculate length of + * @return {Number} length of a + */ +vec2.length = function (a) { + var x = a[0], + y = a[1]; + return Math.sqrt(x*x + y*y); +}; + +/** + * Alias for vec2.length + * @method len + * @static + */ +vec2.len = vec2.length; + +/** + * Calculates the squared length of a vec2 + * @static + * @method squaredLength + * @param {Array} a vector to calculate squared length of + * @return {Number} squared length of a + */ +vec2.squaredLength = function (a) { + var x = a[0], + y = a[1]; + return x*x + y*y; +}; + +/** + * Alias for vec2.squaredLength + * @static + * @method sqrLen + */ +vec2.sqrLen = vec2.squaredLength; + +/** + * Negates the components of a vec2 + * @static + * @method negate + * @param {Array} out the receiving vector + * @param {Array} a vector to negate + * @return {Array} out + */ +vec2.negate = function(out, a) { + out[0] = -a[0]; + out[1] = -a[1]; + return out; +}; + +/** + * Normalize a vec2 + * @static + * @method normalize + * @param {Array} out the receiving vector + * @param {Array} a vector to normalize + * @return {Array} out + */ +vec2.normalize = function(out, a) { + var x = a[0], + y = a[1]; + var len = x*x + y*y; + if (len > 0) { + //TODO: evaluate use of glm_invsqrt here? + len = 1 / Math.sqrt(len); + out[0] = a[0] * len; + out[1] = a[1] * len; + } + return out; +}; + +/** + * Calculates the dot product of two vec2's + * @static + * @method dot + * @param {Array} a the first operand + * @param {Array} b the second operand + * @return {Number} dot product of a and b + */ +vec2.dot = function (a, b) { + return a[0] * b[0] + a[1] * b[1]; +}; + +/** + * Returns a string representation of a vector + * @static + * @method str + * @param {Array} vec vector to represent as a string + * @return {String} string representation of the vector + */ +vec2.str = function (a) { + return 'vec2(' + a[0] + ', ' + a[1] + ')'; +}; + +/** + * Linearly interpolate/mix two vectors. + * @static + * @method lerp + * @param {Array} out + * @param {Array} a First vector + * @param {Array} b Second vector + * @param {number} t Lerp factor + */ +vec2.lerp = function (out, a, b, t) { + var ax = a[0], + ay = a[1]; + out[0] = ax + t * (b[0] - ax); + out[1] = ay + t * (b[1] - ay); + return out; +}; + +/** + * Reflect a vector along a normal. + * @static + * @method reflect + * @param {Array} out + * @param {Array} vector + * @param {Array} normal + */ +vec2.reflect = function(out, vector, normal){ + var dot = vector[0] * normal[0] + vector[1] * normal[1]; + out[0] = vector[0] - 2 * normal[0] * dot; + out[1] = vector[1] - 2 * normal[1] * dot; +}; + +/** + * Get the intersection point between two line segments. + * @static + * @method getLineSegmentsIntersection + * @param {Array} out + * @param {Array} p0 + * @param {Array} p1 + * @param {Array} p2 + * @param {Array} p3 + * @return {boolean} True if there was an intersection, otherwise false. + */ +vec2.getLineSegmentsIntersection = function(out, p0, p1, p2, p3) { + var t = vec2.getLineSegmentsIntersectionFraction(p0, p1, p2, p3); + if(t < 0){ + return false; + } else { + out[0] = p0[0] + (t * (p1[0] - p0[0])); + out[1] = p0[1] + (t * (p1[1] - p0[1])); + return true; + } +}; + +/** + * Get the intersection fraction between two line segments. If successful, the intersection is at p0 + t * (p1 - p0) + * @static + * @method getLineSegmentsIntersectionFraction + * @param {Array} p0 + * @param {Array} p1 + * @param {Array} p2 + * @param {Array} p3 + * @return {number} A number between 0 and 1 if there was an intersection, otherwise -1. + */ +vec2.getLineSegmentsIntersectionFraction = function(p0, p1, p2, p3) { + var s1_x = p1[0] - p0[0]; + var s1_y = p1[1] - p0[1]; + var s2_x = p3[0] - p2[0]; + var s2_y = p3[1] - p2[1]; + + var s, t; + s = (-s1_y * (p0[0] - p2[0]) + s1_x * (p0[1] - p2[1])) / (-s2_x * s1_y + s1_x * s2_y); + t = ( s2_x * (p0[1] - p2[1]) - s2_y * (p0[0] - p2[0])) / (-s2_x * s1_y + s1_x * s2_y); + if (s >= 0 && s <= 1 && t >= 0 && t <= 1) { // Collision detected + return t; + } + return -1; // No collision +}; + +},{"../utils/Utils":57}],31:[function(_dereq_,module,exports){ +var vec2 = _dereq_('../math/vec2') +, decomp = _dereq_('poly-decomp') +, Convex = _dereq_('../shapes/Convex') +, RaycastResult = _dereq_('../collision/RaycastResult') +, Ray = _dereq_('../collision/Ray') +, AABB = _dereq_('../collision/AABB') +, EventEmitter = _dereq_('../events/EventEmitter'); + +module.exports = Body; + +/** + * A rigid body. Has got a center of mass, position, velocity and a number of + * shapes that are used for collisions. + * + * @class Body + * @constructor + * @extends EventEmitter + * @param {Array} [options.force] + * @param {Array} [options.position] + * @param {Array} [options.velocity] + * @param {Boolean} [options.allowSleep] + * @param {Boolean} [options.collisionResponse] + * @param {Number} [options.angle=0] + * @param {Number} [options.angularForce=0] + * @param {Number} [options.angularVelocity=0] + * @param {Number} [options.ccdIterations=10] + * @param {Number} [options.ccdSpeedThreshold=-1] + * @param {Number} [options.fixedRotation=false] + * @param {Number} [options.gravityScale] + * @param {Number} [options.id] + * @param {Number} [options.mass=0] A number >= 0. If zero, the .type will be set to Body.STATIC. + * @param {Number} [options.sleepSpeedLimit] + * @param {Number} [options.sleepTimeLimit] + * @param {Object} [options] + * + * @example + * + * // Create a typical dynamic body + * var body = new Body({ + * mass: 1, + * position: [0, 0], + * angle: 0, + * velocity: [0, 0], + * angularVelocity: 0 + * }); + * + * // Add a circular shape to the body + * body.addShape(new Circle({ radius: 1 })); + * + * // Add the body to the world + * world.addBody(body); + */ +function Body(options){ + options = options || {}; + + EventEmitter.call(this); + + /** + * The body identifyer + * @property id + * @type {Number} + */ + this.id = options.id || ++Body._idCounter; + + /** + * The world that this body is added to. This property is set to NULL if the body is not added to any world. + * @property world + * @type {World} + */ + this.world = null; + + /** + * The shapes of the body. + * + * @property shapes + * @type {Array} + */ + this.shapes = []; + + /** + * The mass of the body. + * @property mass + * @type {number} + */ + this.mass = options.mass || 0; + + /** + * The inverse mass of the body. + * @property invMass + * @type {number} + */ + this.invMass = 0; + + /** + * The inertia of the body around the Z axis. + * @property inertia + * @type {number} + */ + this.inertia = 0; + + /** + * The inverse inertia of the body. + * @property invInertia + * @type {number} + */ + this.invInertia = 0; + + this.invMassSolve = 0; + this.invInertiaSolve = 0; + + /** + * Set to true if you want to fix the rotation of the body. + * @property fixedRotation + * @type {Boolean} + */ + this.fixedRotation = !!options.fixedRotation; + + /** + * Set to true if you want to fix the body movement along the X axis. The body will still be able to move along Y. + * @property {Boolean} fixedX + */ + this.fixedX = !!options.fixedX; + + /** + * Set to true if you want to fix the body movement along the Y axis. The body will still be able to move along X. + * @property {Boolean} fixedY + */ + this.fixedY = !!options.fixedY; + + /** + * @private + * @property {array} massMultiplier + */ + this.massMultiplier = vec2.create(); + + /** + * The position of the body + * @property position + * @type {Array} + */ + this.position = vec2.fromValues(0,0); + if(options.position){ + vec2.copy(this.position, options.position); + } + + /** + * The interpolated position of the body. Use this for rendering. + * @property interpolatedPosition + * @type {Array} + */ + this.interpolatedPosition = vec2.fromValues(0,0); + + /** + * The interpolated angle of the body. Use this for rendering. + * @property interpolatedAngle + * @type {Number} + */ + this.interpolatedAngle = 0; + + /** + * The previous position of the body. + * @property previousPosition + * @type {Array} + */ + this.previousPosition = vec2.fromValues(0,0); + + /** + * The previous angle of the body. + * @property previousAngle + * @type {Number} + */ + this.previousAngle = 0; + + /** + * The current velocity of the body. + * @property velocity + * @type {Array} + */ + this.velocity = vec2.fromValues(0,0); + if(options.velocity){ + vec2.copy(this.velocity, options.velocity); + } + + /** + * Constraint velocity that was added to the body during the last step. + * @property vlambda + * @type {Array} + */ + this.vlambda = vec2.fromValues(0,0); + + /** + * Angular constraint velocity that was added to the body during last step. + * @property wlambda + * @type {Array} + */ + this.wlambda = 0; + + /** + * The angle of the body, in radians. + * @property angle + * @type {number} + * @example + * // The angle property is not normalized to the interval 0 to 2*pi, it can be any value. + * // If you need a value between 0 and 2*pi, use the following function to normalize it. + * function normalizeAngle(angle){ + * angle = angle % (2*Math.PI); + * if(angle < 0){ + * angle += (2*Math.PI); + * } + * return angle; + * } + */ + this.angle = options.angle || 0; + + /** + * The angular velocity of the body, in radians per second. + * @property angularVelocity + * @type {number} + */ + this.angularVelocity = options.angularVelocity || 0; + + /** + * The force acting on the body. Since the body force (and {{#crossLink "Body/angularForce:property"}}{{/crossLink}}) will be zeroed after each step, so you need to set the force before each step. + * @property force + * @type {Array} + * + * @example + * // This produces a forcefield of 1 Newton in the positive x direction. + * for(var i=0; i radius){ + radius = offset + r; + } + } + + this.boundingRadius = radius; +}; + +/** + * Add a shape to the body. You can pass a local transform when adding a shape, + * so that the shape gets an offset and angle relative to the body center of mass. + * Will automatically update the mass properties and bounding radius. + * + * @method addShape + * @param {Shape} shape + * @param {Array} [offset] Local body offset of the shape. + * @param {Number} [angle] Local body angle. + * + * @example + * var body = new Body(), + * shape = new Circle({ radius: 1 }); + * + * // Add the shape to the body, positioned in the center + * body.addShape(shape); + * + * // Add another shape to the body, positioned 1 unit length from the body center of mass along the local x-axis. + * body.addShape(shape,[1,0]); + * + * // Add another shape to the body, positioned 1 unit length from the body center of mass along the local y-axis, and rotated 90 degrees CCW. + * body.addShape(shape,[0,1],Math.PI/2); + */ +Body.prototype.addShape = function(shape, offset, angle){ + if(shape.body){ + throw new Error('A shape can only be added to one body.'); + } + shape.body = this; + + // Copy the offset vector + if(offset){ + vec2.copy(shape.position, offset); + } else { + vec2.set(shape.position, 0, 0); + } + + shape.angle = angle || 0; + + this.shapes.push(shape); + this.updateMassProperties(); + this.updateBoundingRadius(); + + this.aabbNeedsUpdate = true; +}; + +/** + * Remove a shape + * @method removeShape + * @param {Shape} shape + * @return {Boolean} True if the shape was found and removed, else false. + */ +Body.prototype.removeShape = function(shape){ + var idx = this.shapes.indexOf(shape); + + if(idx !== -1){ + this.shapes.splice(idx,1); + this.aabbNeedsUpdate = true; + shape.body = null; + return true; + } else { + return false; + } +}; + +/** + * Updates .inertia, .invMass, .invInertia for this Body. Should be called when + * changing the structure or mass of the Body. + * + * @method updateMassProperties + * + * @example + * body.mass += 1; + * body.updateMassProperties(); + */ +Body.prototype.updateMassProperties = function(){ + if(this.type === Body.STATIC || this.type === Body.KINEMATIC){ + + this.mass = Number.MAX_VALUE; + this.invMass = 0; + this.inertia = Number.MAX_VALUE; + this.invInertia = 0; + + } else { + + var shapes = this.shapes, + N = shapes.length, + m = this.mass / N, + I = 0; + + if(!this.fixedRotation){ + for(var i=0; i0 ? 1/I : 0; + + } else { + this.inertia = Number.MAX_VALUE; + this.invInertia = 0; + } + + // Inverse mass properties are easy + this.invMass = 1 / this.mass; + + vec2.set( + this.massMultiplier, + this.fixedX ? 0 : 1, + this.fixedY ? 0 : 1 + ); + } +}; + +var Body_applyForce_r = vec2.create(); + +/** + * Apply force to a point relative to the center of mass of the body. This could for example be a point on the RigidBody surface. Applying force this way will add to Body.force and Body.angularForce. If relativePoint is zero, the force will be applied directly on the center of mass, and the torque produced will be zero. + * @method applyForce + * @param {Array} force The force to add. + * @param {Array} [relativePoint] A world point to apply the force on. + */ +Body.prototype.applyForce = function(force, relativePoint){ + + // Add linear force + vec2.add(this.force, this.force, force); + + if(relativePoint){ + + // Compute produced rotational force + var rotForce = vec2.crossLength(relativePoint,force); + + // Add rotational force + this.angularForce += rotForce; + } +}; + +/** + * Apply force to a body-local point. + * @method applyForceLocal + * @param {Array} localForce The force vector to add, oriented in local body space. + * @param {Array} localPoint A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be excerted on the center of mass. + */ +var Body_applyForce_forceWorld = vec2.create(); +var Body_applyForce_pointWorld = vec2.create(); +var Body_applyForce_pointLocal = vec2.create(); +Body.prototype.applyForceLocal = function(localForce, localPoint){ + localPoint = localPoint || Body_applyForce_pointLocal; + var worldForce = Body_applyForce_forceWorld; + var worldPoint = Body_applyForce_pointWorld; + this.vectorToWorldFrame(worldForce, localForce); + this.vectorToWorldFrame(worldPoint, localPoint); + this.applyForce(worldForce, worldPoint); +}; + +/** + * Apply impulse to a point relative to the body. This could for example be a point on the Body surface. An impulse is a force added to a body during a short period of time (impulse = force * time). Impulses will be added to Body.velocity and Body.angularVelocity. + * @method applyImpulse + * @param {Array} impulse The impulse vector to add, oriented in world space. + * @param {Array} [relativePoint] A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be excerted on the center of mass. + */ +var Body_applyImpulse_velo = vec2.create(); +Body.prototype.applyImpulse = function(impulseVector, relativePoint){ + if(this.type !== Body.DYNAMIC){ + return; + } + + // Compute produced central impulse velocity + var velo = Body_applyImpulse_velo; + vec2.scale(velo, impulseVector, this.invMass); + vec2.multiply(velo, this.massMultiplier, velo); + + // Add linear impulse + vec2.add(this.velocity, velo, this.velocity); + + if(relativePoint){ + // Compute produced rotational impulse velocity + var rotVelo = vec2.crossLength(relativePoint, impulseVector); + rotVelo *= this.invInertia; + + // Add rotational Impulse + this.angularVelocity += rotVelo; + } +}; + +/** + * Apply impulse to a point relative to the body. This could for example be a point on the Body surface. An impulse is a force added to a body during a short period of time (impulse = force * time). Impulses will be added to Body.velocity and Body.angularVelocity. + * @method applyImpulseLocal + * @param {Array} impulse The impulse vector to add, oriented in world space. + * @param {Array} [relativePoint] A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be excerted on the center of mass. + */ +var Body_applyImpulse_impulseWorld = vec2.create(); +var Body_applyImpulse_pointWorld = vec2.create(); +var Body_applyImpulse_pointLocal = vec2.create(); +Body.prototype.applyImpulseLocal = function(localImpulse, localPoint){ + localPoint = localPoint || Body_applyImpulse_pointLocal; + var worldImpulse = Body_applyImpulse_impulseWorld; + var worldPoint = Body_applyImpulse_pointWorld; + this.vectorToWorldFrame(worldImpulse, localImpulse); + this.vectorToWorldFrame(worldPoint, localPoint); + this.applyImpulse(worldImpulse, worldPoint); +}; + +/** + * Transform a world point to local body frame. + * @method toLocalFrame + * @param {Array} out The vector to store the result in + * @param {Array} worldPoint The input world point + */ +Body.prototype.toLocalFrame = function(out, worldPoint){ + vec2.toLocalFrame(out, worldPoint, this.position, this.angle); +}; + +/** + * Transform a local point to world frame. + * @method toWorldFrame + * @param {Array} out The vector to store the result in + * @param {Array} localPoint The input local point + */ +Body.prototype.toWorldFrame = function(out, localPoint){ + vec2.toGlobalFrame(out, localPoint, this.position, this.angle); +}; + +/** + * Transform a world point to local body frame. + * @method vectorToLocalFrame + * @param {Array} out The vector to store the result in + * @param {Array} worldVector The input world vector + */ +Body.prototype.vectorToLocalFrame = function(out, worldVector){ + vec2.vectorToLocalFrame(out, worldVector, this.angle); +}; + +/** + * Transform a local point to world frame. + * @method vectorToWorldFrame + * @param {Array} out The vector to store the result in + * @param {Array} localVector The input local vector + */ +Body.prototype.vectorToWorldFrame = function(out, localVector){ + vec2.vectorToGlobalFrame(out, localVector, this.angle); +}; + +/** + * Reads a polygon shape path, and assembles convex shapes from that and puts them at proper offset points. + * @method fromPolygon + * @param {Array} path An array of 2d vectors, e.g. [[0,0],[0,1],...] that resembles a concave or convex polygon. The shape must be simple and without holes. + * @param {Object} [options] + * @param {Boolean} [options.optimalDecomp=false] Set to true if you need optimal decomposition. Warning: very slow for polygons with more than 10 vertices. + * @param {Boolean} [options.skipSimpleCheck=false] Set to true if you already know that the path is not intersecting itself. + * @param {Boolean|Number} [options.removeCollinearPoints=false] Set to a number (angle threshold value) to remove collinear points, or false to keep all points. + * @return {Boolean} True on success, else false. + */ +Body.prototype.fromPolygon = function(path,options){ + options = options || {}; + + // Remove all shapes + for(var i=this.shapes.length; i>=0; --i){ + this.removeShape(this.shapes[i]); + } + + var p = new decomp.Polygon(); + p.vertices = path; + + // Make it counter-clockwise + p.makeCCW(); + + if(typeof(options.removeCollinearPoints) === "number"){ + p.removeCollinearPoints(options.removeCollinearPoints); + } + + // Check if any line segment intersects the path itself + if(typeof(options.skipSimpleCheck) === "undefined"){ + if(!p.isSimple()){ + return false; + } + } + + // Save this path for later + this.concavePath = p.vertices.slice(0); + for(var i=0; ithis for details. + * @method applyDamping + * @param {number} dt Current time step + */ +Body.prototype.applyDamping = function(dt){ + if(this.type === Body.DYNAMIC){ // Only for dynamic bodies + var v = this.velocity; + vec2.scale(v, v, Math.pow(1.0 - this.damping,dt)); + this.angularVelocity *= Math.pow(1.0 - this.angularDamping,dt); + } +}; + +/** + * Wake the body up. Normally you should not need this, as the body is automatically awoken at events such as collisions. + * Sets the sleepState to {{#crossLink "Body/AWAKE:property"}}Body.AWAKE{{/crossLink}} and emits the wakeUp event if the body wasn't awake before. + * @method wakeUp + */ +Body.prototype.wakeUp = function(){ + var s = this.sleepState; + this.sleepState = Body.AWAKE; + this.idleTime = 0; + if(s !== Body.AWAKE){ + this.emit(Body.wakeUpEvent); + } +}; + +/** + * Force body sleep + * @method sleep + */ +Body.prototype.sleep = function(){ + this.sleepState = Body.SLEEPING; + this.angularVelocity = 0; + this.angularForce = 0; + vec2.set(this.velocity,0,0); + vec2.set(this.force,0,0); + this.emit(Body.sleepEvent); +}; + +/** + * Called every timestep to update internal sleep timer and change sleep state if needed. + * @method sleepTick + * @param {number} time The world time in seconds + * @param {boolean} dontSleep + * @param {number} dt + */ +Body.prototype.sleepTick = function(time, dontSleep, dt){ + if(!this.allowSleep || this.type === Body.SLEEPING){ + return; + } + + this.wantsToSleep = false; + + var sleepState = this.sleepState, + speedSquared = vec2.squaredLength(this.velocity) + Math.pow(this.angularVelocity,2), + speedLimitSquared = Math.pow(this.sleepSpeedLimit,2); + + // Add to idle time + if(speedSquared >= speedLimitSquared){ + this.idleTime = 0; + this.sleepState = Body.AWAKE; + } else { + this.idleTime += dt; + this.sleepState = Body.SLEEPY; + } + if(this.idleTime > this.sleepTimeLimit){ + if(!dontSleep){ + this.sleep(); + } else { + this.wantsToSleep = true; + } + } +}; + +/** + * Check if the body is overlapping another body. Note that this method only works if the body was added to a World and if at least one step was taken. + * @method overlaps + * @param {Body} body + * @return {boolean} + */ +Body.prototype.overlaps = function(body){ + return this.world.overlapKeeper.bodiesAreOverlapping(this, body); +}; + +var integrate_fhMinv = vec2.create(); +var integrate_velodt = vec2.create(); + +/** + * Move the body forward in time given its current velocity. + * @method integrate + * @param {Number} dt + */ +Body.prototype.integrate = function(dt){ + var minv = this.invMass, + f = this.force, + pos = this.position, + velo = this.velocity; + + // Save old position + vec2.copy(this.previousPosition, this.position); + this.previousAngle = this.angle; + + // Velocity update + if(!this.fixedRotation){ + this.angularVelocity += this.angularForce * this.invInertia * dt; + } + vec2.scale(integrate_fhMinv, f, dt * minv); + vec2.multiply(integrate_fhMinv, this.massMultiplier, integrate_fhMinv); + vec2.add(velo, integrate_fhMinv, velo); + + // CCD + if(!this.integrateToTimeOfImpact(dt)){ + + // Regular position update + vec2.scale(integrate_velodt, velo, dt); + vec2.add(pos, pos, integrate_velodt); + if(!this.fixedRotation){ + this.angle += this.angularVelocity * dt; + } + } + + this.aabbNeedsUpdate = true; +}; + +var result = new RaycastResult(); +var ray = new Ray({ + mode: Ray.ALL +}); +var direction = vec2.create(); +var end = vec2.create(); +var startToEnd = vec2.create(); +var rememberPosition = vec2.create(); +Body.prototype.integrateToTimeOfImpact = function(dt){ + + if(this.ccdSpeedThreshold < 0 || vec2.squaredLength(this.velocity) < Math.pow(this.ccdSpeedThreshold, 2)){ + return false; + } + + vec2.normalize(direction, this.velocity); + + vec2.scale(end, this.velocity, dt); + vec2.add(end, end, this.position); + + vec2.sub(startToEnd, end, this.position); + var startToEndAngle = this.angularVelocity * dt; + var len = vec2.length(startToEnd); + + var timeOfImpact = 1; + + var hit; + var that = this; + result.reset(); + ray.callback = function (result) { + if(result.body === that){ + return; + } + hit = result.body; + result.getHitPoint(end, ray); + vec2.sub(startToEnd, end, that.position); + timeOfImpact = vec2.length(startToEnd) / len; + result.stop(); + }; + vec2.copy(ray.from, this.position); + vec2.copy(ray.to, end); + ray.update(); + this.world.raycast(result, ray); + + if(!hit){ + return false; + } + + var rememberAngle = this.angle; + vec2.copy(rememberPosition, this.position); + + // Got a start and end point. Approximate time of impact using binary search + var iter = 0; + var tmin = 0; + var tmid = 0; + var tmax = timeOfImpact; + while (tmax >= tmin && iter < this.ccdIterations) { + iter++; + + // calculate the midpoint + tmid = (tmax - tmin) / 2; + + // Move the body to that point + vec2.scale(integrate_velodt, startToEnd, timeOfImpact); + vec2.add(this.position, rememberPosition, integrate_velodt); + this.angle = rememberAngle + startToEndAngle * timeOfImpact; + this.updateAABB(); + + // check overlap + var overlaps = this.aabb.overlaps(hit.aabb) && this.world.narrowphase.bodiesOverlap(this, hit); + + if (overlaps) { + // change min to search upper interval + tmin = tmid; + } else { + // change max to search lower interval + tmax = tmid; + } + } + + timeOfImpact = tmid; + + vec2.copy(this.position, rememberPosition); + this.angle = rememberAngle; + + // move to TOI + vec2.scale(integrate_velodt, startToEnd, timeOfImpact); + vec2.add(this.position, this.position, integrate_velodt); + if(!this.fixedRotation){ + this.angle += startToEndAngle * timeOfImpact; + } + + return true; +}; + +/** + * Get velocity of a point in the body. + * @method getVelocityAtPoint + * @param {Array} result A vector to store the result in + * @param {Array} relativePoint A world oriented vector, indicating the position of the point to get the velocity from + * @return {Array} The result vector + */ +Body.prototype.getVelocityAtPoint = function(result, relativePoint){ + vec2.crossVZ(result, relativePoint, this.angularVelocity); + vec2.subtract(result, this.velocity, result); + return result; +}; + +/** + * @event sleepy + */ +Body.sleepyEvent = { + type: "sleepy" +}; + +/** + * @event sleep + */ +Body.sleepEvent = { + type: "sleep" +}; + +/** + * @event wakeup + */ +Body.wakeUpEvent = { + type: "wakeup" +}; + +/** + * Dynamic body. + * @property DYNAMIC + * @type {Number} + * @static + */ +Body.DYNAMIC = 1; + +/** + * Static body. + * @property STATIC + * @type {Number} + * @static + */ +Body.STATIC = 2; + +/** + * Kinematic body. + * @property KINEMATIC + * @type {Number} + * @static + */ +Body.KINEMATIC = 4; + +/** + * @property AWAKE + * @type {Number} + * @static + */ +Body.AWAKE = 0; + +/** + * @property SLEEPY + * @type {Number} + * @static + */ +Body.SLEEPY = 1; + +/** + * @property SLEEPING + * @type {Number} + * @static + */ +Body.SLEEPING = 2; + + +},{"../collision/AABB":7,"../collision/Ray":11,"../collision/RaycastResult":12,"../events/EventEmitter":26,"../math/vec2":30,"../shapes/Convex":40,"poly-decomp":5}],32:[function(_dereq_,module,exports){ +var vec2 = _dereq_('../math/vec2'); +var Spring = _dereq_('./Spring'); +var Utils = _dereq_('../utils/Utils'); + +module.exports = LinearSpring; + +/** + * A spring, connecting two bodies. + * + * The Spring explicitly adds force and angularForce to the bodies. + * + * @class LinearSpring + * @extends Spring + * @constructor + * @param {Body} bodyA + * @param {Body} bodyB + * @param {Object} [options] + * @param {number} [options.restLength] A number > 0. Default is the current distance between the world anchor points. + * @param {number} [options.stiffness=100] Spring constant (see Hookes Law). A number >= 0. + * @param {number} [options.damping=1] A number >= 0. Default: 1 + * @param {Array} [options.worldAnchorA] Where to hook the spring to body A, in world coordinates. Overrides the option "localAnchorA" if given. + * @param {Array} [options.worldAnchorB] + * @param {Array} [options.localAnchorA] Where to hook the spring to body A, in local body coordinates. Defaults to the body center. + * @param {Array} [options.localAnchorB] + */ +function LinearSpring(bodyA,bodyB,options){ + options = options || {}; + + Spring.call(this, bodyA, bodyB, options); + + /** + * Anchor for bodyA in local bodyA coordinates. + * @property localAnchorA + * @type {Array} + */ + this.localAnchorA = vec2.fromValues(0,0); + + /** + * Anchor for bodyB in local bodyB coordinates. + * @property localAnchorB + * @type {Array} + */ + this.localAnchorB = vec2.fromValues(0,0); + + if(options.localAnchorA){ vec2.copy(this.localAnchorA, options.localAnchorA); } + if(options.localAnchorB){ vec2.copy(this.localAnchorB, options.localAnchorB); } + if(options.worldAnchorA){ this.setWorldAnchorA(options.worldAnchorA); } + if(options.worldAnchorB){ this.setWorldAnchorB(options.worldAnchorB); } + + var worldAnchorA = vec2.create(); + var worldAnchorB = vec2.create(); + this.getWorldAnchorA(worldAnchorA); + this.getWorldAnchorB(worldAnchorB); + var worldDistance = vec2.distance(worldAnchorA, worldAnchorB); + + /** + * Rest length of the spring. + * @property restLength + * @type {number} + */ + this.restLength = typeof(options.restLength) === "number" ? options.restLength : worldDistance; +} +LinearSpring.prototype = new Spring(); +LinearSpring.prototype.constructor = LinearSpring; + +/** + * Set the anchor point on body A, using world coordinates. + * @method setWorldAnchorA + * @param {Array} worldAnchorA + */ +LinearSpring.prototype.setWorldAnchorA = function(worldAnchorA){ + this.bodyA.toLocalFrame(this.localAnchorA, worldAnchorA); +}; + +/** + * Set the anchor point on body B, using world coordinates. + * @method setWorldAnchorB + * @param {Array} worldAnchorB + */ +LinearSpring.prototype.setWorldAnchorB = function(worldAnchorB){ + this.bodyB.toLocalFrame(this.localAnchorB, worldAnchorB); +}; + +/** + * Get the anchor point on body A, in world coordinates. + * @method getWorldAnchorA + * @param {Array} result The vector to store the result in. + */ +LinearSpring.prototype.getWorldAnchorA = function(result){ + this.bodyA.toWorldFrame(result, this.localAnchorA); +}; + +/** + * Get the anchor point on body B, in world coordinates. + * @method getWorldAnchorB + * @param {Array} result The vector to store the result in. + */ +LinearSpring.prototype.getWorldAnchorB = function(result){ + this.bodyB.toWorldFrame(result, this.localAnchorB); +}; + +var applyForce_r = vec2.create(), + applyForce_r_unit = vec2.create(), + applyForce_u = vec2.create(), + applyForce_f = vec2.create(), + applyForce_worldAnchorA = vec2.create(), + applyForce_worldAnchorB = vec2.create(), + applyForce_ri = vec2.create(), + applyForce_rj = vec2.create(), + applyForce_tmp = vec2.create(); + +/** + * Apply the spring force to the connected bodies. + * @method applyForce + */ +LinearSpring.prototype.applyForce = function(){ + var k = this.stiffness, + d = this.damping, + l = this.restLength, + bodyA = this.bodyA, + bodyB = this.bodyB, + r = applyForce_r, + r_unit = applyForce_r_unit, + u = applyForce_u, + f = applyForce_f, + tmp = applyForce_tmp; + + var worldAnchorA = applyForce_worldAnchorA, + worldAnchorB = applyForce_worldAnchorB, + ri = applyForce_ri, + rj = applyForce_rj; + + // Get world anchors + this.getWorldAnchorA(worldAnchorA); + this.getWorldAnchorB(worldAnchorB); + + // Get offset points + vec2.sub(ri, worldAnchorA, bodyA.position); + vec2.sub(rj, worldAnchorB, bodyB.position); + + // Compute distance vector between world anchor points + vec2.sub(r, worldAnchorB, worldAnchorA); + var rlen = vec2.len(r); + vec2.normalize(r_unit,r); + + //console.log(rlen) + //console.log("A",vec2.str(worldAnchorA),"B",vec2.str(worldAnchorB)) + + // Compute relative velocity of the anchor points, u + vec2.sub(u, bodyB.velocity, bodyA.velocity); + vec2.crossZV(tmp, bodyB.angularVelocity, rj); + vec2.add(u, u, tmp); + vec2.crossZV(tmp, bodyA.angularVelocity, ri); + vec2.sub(u, u, tmp); + + // F = - k * ( x - L ) - D * ( u ) + vec2.scale(f, r_unit, -k*(rlen-l) - d*vec2.dot(u,r_unit)); + + // Add forces to bodies + vec2.sub( bodyA.force, bodyA.force, f); + vec2.add( bodyB.force, bodyB.force, f); + + // Angular force + var ri_x_f = vec2.crossLength(ri, f); + var rj_x_f = vec2.crossLength(rj, f); + bodyA.angularForce -= ri_x_f; + bodyB.angularForce += rj_x_f; +}; + +},{"../math/vec2":30,"../utils/Utils":57,"./Spring":34}],33:[function(_dereq_,module,exports){ +var vec2 = _dereq_('../math/vec2'); +var Spring = _dereq_('./Spring'); + +module.exports = RotationalSpring; + +/** + * A rotational spring, connecting two bodies rotation. This spring explicitly adds angularForce (torque) to the bodies. + * + * The spring can be combined with a {{#crossLink "RevoluteConstraint"}}{{/crossLink}} to make, for example, a mouse trap. + * + * @class RotationalSpring + * @extends Spring + * @constructor + * @param {Body} bodyA + * @param {Body} bodyB + * @param {Object} [options] + * @param {number} [options.restAngle] The relative angle of bodies at which the spring is at rest. If not given, it's set to the current relative angle between the bodies. + * @param {number} [options.stiffness=100] Spring constant (see Hookes Law). A number >= 0. + * @param {number} [options.damping=1] A number >= 0. + */ +function RotationalSpring(bodyA, bodyB, options){ + options = options || {}; + + Spring.call(this, bodyA, bodyB, options); + + /** + * Rest angle of the spring. + * @property restAngle + * @type {number} + */ + this.restAngle = typeof(options.restAngle) === "number" ? options.restAngle : bodyB.angle - bodyA.angle; +} +RotationalSpring.prototype = new Spring(); +RotationalSpring.prototype.constructor = RotationalSpring; + +/** + * Apply the spring force to the connected bodies. + * @method applyForce + */ +RotationalSpring.prototype.applyForce = function(){ + var k = this.stiffness, + d = this.damping, + l = this.restAngle, + bodyA = this.bodyA, + bodyB = this.bodyB, + x = bodyB.angle - bodyA.angle, + u = bodyB.angularVelocity - bodyA.angularVelocity; + + var torque = - k * (x - l) - d * u * 0; + + bodyA.angularForce -= torque; + bodyB.angularForce += torque; +}; + +},{"../math/vec2":30,"./Spring":34}],34:[function(_dereq_,module,exports){ +var vec2 = _dereq_('../math/vec2'); +var Utils = _dereq_('../utils/Utils'); + +module.exports = Spring; + +/** + * A spring, connecting two bodies. The Spring explicitly adds force and angularForce to the bodies and does therefore not put load on the constraint solver. + * + * @class Spring + * @constructor + * @param {Body} bodyA + * @param {Body} bodyB + * @param {Object} [options] + * @param {number} [options.stiffness=100] Spring constant (see Hookes Law). A number >= 0. + * @param {number} [options.damping=1] A number >= 0. Default: 1 + * @param {Array} [options.localAnchorA] Where to hook the spring to body A, in local body coordinates. Defaults to the body center. + * @param {Array} [options.localAnchorB] + * @param {Array} [options.worldAnchorA] Where to hook the spring to body A, in world coordinates. Overrides the option "localAnchorA" if given. + * @param {Array} [options.worldAnchorB] + */ +function Spring(bodyA, bodyB, options){ + options = Utils.defaults(options,{ + stiffness: 100, + damping: 1, + }); + + /** + * Stiffness of the spring. + * @property stiffness + * @type {number} + */ + this.stiffness = options.stiffness; + + /** + * Damping of the spring. + * @property damping + * @type {number} + */ + this.damping = options.damping; + + /** + * First connected body. + * @property bodyA + * @type {Body} + */ + this.bodyA = bodyA; + + /** + * Second connected body. + * @property bodyB + * @type {Body} + */ + this.bodyB = bodyB; +} + +/** + * Apply the spring force to the connected bodies. + * @method applyForce + */ +Spring.prototype.applyForce = function(){ + // To be implemented by subclasses +}; + +},{"../math/vec2":30,"../utils/Utils":57}],35:[function(_dereq_,module,exports){ +var vec2 = _dereq_('../math/vec2'); +var Utils = _dereq_('../utils/Utils'); +var Constraint = _dereq_('../constraints/Constraint'); +var FrictionEquation = _dereq_('../equations/FrictionEquation'); +var Body = _dereq_('../objects/Body'); + +module.exports = TopDownVehicle; + +/** + * @class TopDownVehicle + * @constructor + * @param {Body} chassisBody A dynamic body, already added to the world. + * @param {Object} [options] + * + * @example + * + * // Create a dynamic body for the chassis + * var chassisBody = new Body({ + * mass: 1 + * }); + * var boxShape = new Box({ width: 0.5, height: 1 }); + * chassisBody.addShape(boxShape); + * world.addBody(chassisBody); + * + * // Create the vehicle + * var vehicle = new TopDownVehicle(chassisBody); + * + * // Add one front wheel and one back wheel - we don't actually need four :) + * var frontWheel = vehicle.addWheel({ + * localPosition: [0, 0.5] // front + * }); + * frontWheel.setSideFriction(4); + * + * // Back wheel + * var backWheel = vehicle.addWheel({ + * localPosition: [0, -0.5] // back + * }); + * backWheel.setSideFriction(3); // Less side friction on back wheel makes it easier to drift + * vehicle.addToWorld(world); + * + * // Steer value zero means straight forward. Positive is left and negative right. + * frontWheel.steerValue = Math.PI / 16; + * + * // Engine force forward + * backWheel.engineForce = 10; + * backWheel.setBrakeForce(0); + */ +function TopDownVehicle(chassisBody, options){ + options = options || {}; + + /** + * @property {Body} chassisBody + */ + this.chassisBody = chassisBody; + + /** + * @property {Array} wheels + */ + this.wheels = []; + + // A dummy body to constrain the chassis to + this.groundBody = new Body({ mass: 0 }); + + this.world = null; + + var that = this; + this.preStepCallback = function(){ + that.update(); + }; +} + +/** + * @method addToWorld + * @param {World} world + */ +TopDownVehicle.prototype.addToWorld = function(world){ + this.world = world; + world.addBody(this.groundBody); + world.on('preStep', this.preStepCallback); + for (var i = 0; i < this.wheels.length; i++) { + var wheel = this.wheels[i]; + world.addConstraint(wheel); + } +}; + +/** + * @method removeFromWorld + * @param {World} world + */ +TopDownVehicle.prototype.removeFromWorld = function(){ + var world = this.world; + world.removeBody(this.groundBody); + world.off('preStep', this.preStepCallback); + for (var i = 0; i < this.wheels.length; i++) { + var wheel = this.wheels[i]; + world.removeConstraint(wheel); + } + this.world = null; +}; + +/** + * @method addWheel + * @param {object} [wheelOptions] + * @return {WheelConstraint} + */ +TopDownVehicle.prototype.addWheel = function(wheelOptions){ + var wheel = new WheelConstraint(this,wheelOptions); + this.wheels.push(wheel); + return wheel; +}; + +/** + * @method update + */ +TopDownVehicle.prototype.update = function(){ + for (var i = 0; i < this.wheels.length; i++) { + this.wheels[i].update(); + } +}; + +/** + * @class WheelConstraint + * @constructor + * @extends {Constraint} + * @param {Vehicle} vehicle + * @param {object} [options] + * @param {Array} [options.localForwardVector]The local wheel forward vector in local body space. Default is zero. + * @param {Array} [options.localPosition] The local position of the wheen in the chassis body. Default is zero - the center of the body. + * @param {Array} [options.sideFriction=5] The max friction force in the sideways direction. + */ +function WheelConstraint(vehicle, options){ + options = options || {}; + + this.vehicle = vehicle; + + this.forwardEquation = new FrictionEquation(vehicle.chassisBody, vehicle.groundBody); + + this.sideEquation = new FrictionEquation(vehicle.chassisBody, vehicle.groundBody); + + /** + * @property {number} steerValue + */ + this.steerValue = 0; + + /** + * @property {number} engineForce + */ + this.engineForce = 0; + + this.setSideFriction(options.sideFriction !== undefined ? options.sideFriction : 5); + + /** + * @property {Array} localForwardVector + */ + this.localForwardVector = vec2.fromValues(0, 1); + if(options.localForwardVector){ + vec2.copy(this.localForwardVector, options.localForwardVector); + } + + /** + * @property {Array} localPosition + */ + this.localPosition = vec2.fromValues(0, 0); + if(options.localPosition){ + vec2.copy(this.localPosition, options.localPosition); + } + + Constraint.apply(this, vehicle.chassisBody, vehicle.groundBody); + + this.equations.push( + this.forwardEquation, + this.sideEquation + ); + + this.setBrakeForce(0); +} +WheelConstraint.prototype = new Constraint(); + +/** + * @method setForwardFriction + */ +WheelConstraint.prototype.setBrakeForce = function(force){ + this.forwardEquation.setSlipForce(force); +}; + +/** + * @method setSideFriction + */ +WheelConstraint.prototype.setSideFriction = function(force){ + this.sideEquation.setSlipForce(force); +}; + +var worldVelocity = vec2.create(); +var relativePoint = vec2.create(); + +/** + * @method getSpeed + */ +WheelConstraint.prototype.getSpeed = function(){ + this.vehicle.chassisBody.vectorToWorldFrame(relativePoint, this.localForwardVector); + this.vehicle.chassisBody.getVelocityAtPoint(worldVelocity, relativePoint); + return vec2.dot(worldVelocity, relativePoint); +}; + +var tmpVec = vec2.create(); + +/** + * @method update + */ +WheelConstraint.prototype.update = function(){ + + // Directional + this.vehicle.chassisBody.vectorToWorldFrame(this.forwardEquation.t, this.localForwardVector); + vec2.rotate(this.sideEquation.t, this.localForwardVector, Math.PI / 2); + this.vehicle.chassisBody.vectorToWorldFrame(this.sideEquation.t, this.sideEquation.t); + + vec2.rotate(this.forwardEquation.t, this.forwardEquation.t, this.steerValue); + vec2.rotate(this.sideEquation.t, this.sideEquation.t, this.steerValue); + + // Attachment point + this.vehicle.chassisBody.toWorldFrame(this.forwardEquation.contactPointB, this.localPosition); + vec2.copy(this.sideEquation.contactPointB, this.forwardEquation.contactPointB); + + this.vehicle.chassisBody.vectorToWorldFrame(this.forwardEquation.contactPointA, this.localPosition); + vec2.copy(this.sideEquation.contactPointA, this.forwardEquation.contactPointA); + + // Add engine force + vec2.normalize(tmpVec, this.forwardEquation.t); + vec2.scale(tmpVec, tmpVec, this.engineForce); + + this.vehicle.chassisBody.applyForce(tmpVec, this.forwardEquation.contactPointA); +}; +},{"../constraints/Constraint":14,"../equations/FrictionEquation":23,"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],36:[function(_dereq_,module,exports){ +// Export p2 classes +var p2 = module.exports = { + AABB : _dereq_('./collision/AABB'), + AngleLockEquation : _dereq_('./equations/AngleLockEquation'), + Body : _dereq_('./objects/Body'), + Broadphase : _dereq_('./collision/Broadphase'), + Capsule : _dereq_('./shapes/Capsule'), + Circle : _dereq_('./shapes/Circle'), + Constraint : _dereq_('./constraints/Constraint'), + ContactEquation : _dereq_('./equations/ContactEquation'), + ContactEquationPool : _dereq_('./utils/ContactEquationPool'), + ContactMaterial : _dereq_('./material/ContactMaterial'), + Convex : _dereq_('./shapes/Convex'), + DistanceConstraint : _dereq_('./constraints/DistanceConstraint'), + Equation : _dereq_('./equations/Equation'), + EventEmitter : _dereq_('./events/EventEmitter'), + FrictionEquation : _dereq_('./equations/FrictionEquation'), + FrictionEquationPool : _dereq_('./utils/FrictionEquationPool'), + GearConstraint : _dereq_('./constraints/GearConstraint'), + GSSolver : _dereq_('./solver/GSSolver'), + Heightfield : _dereq_('./shapes/Heightfield'), + Line : _dereq_('./shapes/Line'), + LockConstraint : _dereq_('./constraints/LockConstraint'), + Material : _dereq_('./material/Material'), + Narrowphase : _dereq_('./collision/Narrowphase'), + NaiveBroadphase : _dereq_('./collision/NaiveBroadphase'), + Particle : _dereq_('./shapes/Particle'), + Plane : _dereq_('./shapes/Plane'), + Pool : _dereq_('./utils/Pool'), + RevoluteConstraint : _dereq_('./constraints/RevoluteConstraint'), + PrismaticConstraint : _dereq_('./constraints/PrismaticConstraint'), + Ray : _dereq_('./collision/Ray'), + RaycastResult : _dereq_('./collision/RaycastResult'), + Box : _dereq_('./shapes/Box'), + RotationalVelocityEquation : _dereq_('./equations/RotationalVelocityEquation'), + SAPBroadphase : _dereq_('./collision/SAPBroadphase'), + Shape : _dereq_('./shapes/Shape'), + Solver : _dereq_('./solver/Solver'), + Spring : _dereq_('./objects/Spring'), + TopDownVehicle : _dereq_('./objects/TopDownVehicle'), + LinearSpring : _dereq_('./objects/LinearSpring'), + RotationalSpring : _dereq_('./objects/RotationalSpring'), + Utils : _dereq_('./utils/Utils'), + World : _dereq_('./world/World'), + vec2 : _dereq_('./math/vec2'), + version : _dereq_('../package.json').version, +}; + +Object.defineProperty(p2, 'Rectangle', { + get: function() { + console.warn('The Rectangle class has been renamed to Box.'); + return this.Box; + } +}); +},{"../package.json":6,"./collision/AABB":7,"./collision/Broadphase":8,"./collision/NaiveBroadphase":9,"./collision/Narrowphase":10,"./collision/Ray":11,"./collision/RaycastResult":12,"./collision/SAPBroadphase":13,"./constraints/Constraint":14,"./constraints/DistanceConstraint":15,"./constraints/GearConstraint":16,"./constraints/LockConstraint":17,"./constraints/PrismaticConstraint":18,"./constraints/RevoluteConstraint":19,"./equations/AngleLockEquation":20,"./equations/ContactEquation":21,"./equations/Equation":22,"./equations/FrictionEquation":23,"./equations/RotationalVelocityEquation":25,"./events/EventEmitter":26,"./material/ContactMaterial":27,"./material/Material":28,"./math/vec2":30,"./objects/Body":31,"./objects/LinearSpring":32,"./objects/RotationalSpring":33,"./objects/Spring":34,"./objects/TopDownVehicle":35,"./shapes/Box":37,"./shapes/Capsule":38,"./shapes/Circle":39,"./shapes/Convex":40,"./shapes/Heightfield":41,"./shapes/Line":42,"./shapes/Particle":43,"./shapes/Plane":44,"./shapes/Shape":45,"./solver/GSSolver":46,"./solver/Solver":47,"./utils/ContactEquationPool":48,"./utils/FrictionEquationPool":49,"./utils/Pool":55,"./utils/Utils":57,"./world/World":61}],37:[function(_dereq_,module,exports){ +var vec2 = _dereq_('../math/vec2') +, Shape = _dereq_('./Shape') +, Convex = _dereq_('./Convex'); + +module.exports = Box; + +/** + * Box shape class. + * @class Box + * @constructor + * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) + * @param {Number} [options.width=1] Total width of the box + * @param {Number} [options.height=1] Total height of the box + * @extends Convex + */ +function Box(options){ + if(typeof(arguments[0]) === 'number' && typeof(arguments[1]) === 'number'){ + options = { + width: arguments[0], + height: arguments[1] + }; + console.warn('The Rectangle has been renamed to Box and its constructor signature has changed. Please use the following format: new Box({ width: 1, height: 1, ... })'); + } + options = options || {}; + + /** + * Total width of the box + * @property width + * @type {Number} + */ + var width = this.width = options.width || 1; + + /** + * Total height of the box + * @property height + * @type {Number} + */ + var height = this.height = options.height || 1; + + var verts = [ + vec2.fromValues(-width/2, -height/2), + vec2.fromValues( width/2, -height/2), + vec2.fromValues( width/2, height/2), + vec2.fromValues(-width/2, height/2) + ]; + var axes = [ + vec2.fromValues(1, 0), + vec2.fromValues(0, 1) + ]; + + options.vertices = verts; + options.axes = axes; + options.type = Shape.BOX; + Convex.call(this, options); +} +Box.prototype = new Convex(); +Box.prototype.constructor = Box; + +/** + * Compute moment of inertia + * @method computeMomentOfInertia + * @param {Number} mass + * @return {Number} + */ +Box.prototype.computeMomentOfInertia = function(mass){ + var w = this.width, + h = this.height; + return mass * (h*h + w*w) / 12; +}; + +/** + * Update the bounding radius + * @method updateBoundingRadius + */ +Box.prototype.updateBoundingRadius = function(){ + var w = this.width, + h = this.height; + this.boundingRadius = Math.sqrt(w*w + h*h) / 2; +}; + +var corner1 = vec2.create(), + corner2 = vec2.create(), + corner3 = vec2.create(), + corner4 = vec2.create(); + +/** + * @method computeAABB + * @param {AABB} out The resulting AABB. + * @param {Array} position + * @param {Number} angle + */ +Box.prototype.computeAABB = function(out, position, angle){ + out.setFromPoints(this.vertices,position,angle,0); +}; + +Box.prototype.updateArea = function(){ + this.area = this.width * this.height; +}; + + +},{"../math/vec2":30,"./Convex":40,"./Shape":45}],38:[function(_dereq_,module,exports){ +var Shape = _dereq_('./Shape') +, vec2 = _dereq_('../math/vec2'); + +module.exports = Capsule; + +/** + * Capsule shape class. + * @class Capsule + * @constructor + * @extends Shape + * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) + * @param {Number} [options.length=1] The distance between the end points + * @param {Number} [options.radius=1] Radius of the capsule + * @example + * var capsuleShape = new Capsule({ + * length: 1, + * radius: 2 + * }); + * body.addShape(capsuleShape); + */ +function Capsule(options){ + if(typeof(arguments[0]) === 'number' && typeof(arguments[1]) === 'number'){ + options = { + length: arguments[0], + radius: arguments[1] + }; + console.warn('The Capsule constructor signature has changed. Please use the following format: new Capsule({ radius: 1, length: 1 })'); + } + options = options || {}; + + /** + * The distance between the end points. + * @property {Number} length + */ + this.length = options.length || 1; + + /** + * The radius of the capsule. + * @property {Number} radius + */ + this.radius = options.radius || 1; + + options.type = Shape.CAPSULE; + Shape.call(this, options); +} +Capsule.prototype = new Shape(); +Capsule.prototype.constructor = Capsule; + +/** + * Compute the mass moment of inertia of the Capsule. + * @method conputeMomentOfInertia + * @param {Number} mass + * @return {Number} + * @todo + */ +Capsule.prototype.computeMomentOfInertia = function(mass){ + // Approximate with rectangle + var r = this.radius, + w = this.length + r, // 2*r is too much, 0 is too little + h = r*2; + return mass * (h*h + w*w) / 12; +}; + +/** + * @method updateBoundingRadius + */ +Capsule.prototype.updateBoundingRadius = function(){ + this.boundingRadius = this.radius + this.length/2; +}; + +/** + * @method updateArea + */ +Capsule.prototype.updateArea = function(){ + this.area = Math.PI * this.radius * this.radius + this.radius * 2 * this.length; +}; + +var r = vec2.create(); + +/** + * @method computeAABB + * @param {AABB} out The resulting AABB. + * @param {Array} position + * @param {Number} angle + */ +Capsule.prototype.computeAABB = function(out, position, angle){ + var radius = this.radius; + + // Compute center position of one of the the circles, world oriented, but with local offset + vec2.set(r,this.length / 2,0); + if(angle !== 0){ + vec2.rotate(r,r,angle); + } + + // Get bounds + vec2.set(out.upperBound, Math.max(r[0]+radius, -r[0]+radius), + Math.max(r[1]+radius, -r[1]+radius)); + vec2.set(out.lowerBound, Math.min(r[0]-radius, -r[0]-radius), + Math.min(r[1]-radius, -r[1]-radius)); + + // Add offset + vec2.add(out.lowerBound, out.lowerBound, position); + vec2.add(out.upperBound, out.upperBound, position); +}; + +var intersectCapsule_hitPointWorld = vec2.create(); +var intersectCapsule_normal = vec2.create(); +var intersectCapsule_l0 = vec2.create(); +var intersectCapsule_l1 = vec2.create(); +var intersectCapsule_unit_y = vec2.fromValues(0,1); + +/** + * @method raycast + * @param {RaycastResult} result + * @param {Ray} ray + * @param {array} position + * @param {number} angle + */ +Capsule.prototype.raycast = function(result, ray, position, angle){ + var from = ray.from; + var to = ray.to; + var direction = ray.direction; + + var hitPointWorld = intersectCapsule_hitPointWorld; + var normal = intersectCapsule_normal; + var l0 = intersectCapsule_l0; + var l1 = intersectCapsule_l1; + + // The sides + var halfLen = this.length / 2; + for(var i=0; i<2; i++){ + + // get start and end of the line + var y = this.radius * (i*2-1); + vec2.set(l0, -halfLen, y); + vec2.set(l1, halfLen, y); + vec2.toGlobalFrame(l0, l0, position, angle); + vec2.toGlobalFrame(l1, l1, position, angle); + + var delta = vec2.getLineSegmentsIntersectionFraction(from, to, l0, l1); + if(delta >= 0){ + vec2.rotate(normal, intersectCapsule_unit_y, angle); + vec2.scale(normal, normal, (i*2-1)); + ray.reportIntersection(result, delta, normal, -1); + if(result.shouldStop(ray)){ + return; + } + } + } + + // Circles + var diagonalLengthSquared = Math.pow(this.radius, 2) + Math.pow(halfLen, 2); + for(var i=0; i<2; i++){ + vec2.set(l0, halfLen * (i*2-1), 0); + vec2.toGlobalFrame(l0, l0, position, angle); + + var a = Math.pow(to[0] - from[0], 2) + Math.pow(to[1] - from[1], 2); + var b = 2 * ((to[0] - from[0]) * (from[0] - l0[0]) + (to[1] - from[1]) * (from[1] - l0[1])); + var c = Math.pow(from[0] - l0[0], 2) + Math.pow(from[1] - l0[1], 2) - Math.pow(this.radius, 2); + var delta = Math.pow(b, 2) - 4 * a * c; + + if(delta < 0){ + // No intersection + continue; + + } else if(delta === 0){ + // single intersection point + vec2.lerp(hitPointWorld, from, to, delta); + + if(vec2.squaredDistance(hitPointWorld, position) > diagonalLengthSquared){ + vec2.sub(normal, hitPointWorld, l0); + vec2.normalize(normal,normal); + ray.reportIntersection(result, delta, normal, -1); + if(result.shouldStop(ray)){ + return; + } + } + + } else { + var sqrtDelta = Math.sqrt(delta); + var inv2a = 1 / (2 * a); + var d1 = (- b - sqrtDelta) * inv2a; + var d2 = (- b + sqrtDelta) * inv2a; + + if(d1 >= 0 && d1 <= 1){ + vec2.lerp(hitPointWorld, from, to, d1); + if(vec2.squaredDistance(hitPointWorld, position) > diagonalLengthSquared){ + vec2.sub(normal, hitPointWorld, l0); + vec2.normalize(normal,normal); + ray.reportIntersection(result, d1, normal, -1); + if(result.shouldStop(ray)){ + return; + } + } + } + + if(d2 >= 0 && d2 <= 1){ + vec2.lerp(hitPointWorld, from, to, d2); + if(vec2.squaredDistance(hitPointWorld, position) > diagonalLengthSquared){ + vec2.sub(normal, hitPointWorld, l0); + vec2.normalize(normal,normal); + ray.reportIntersection(result, d2, normal, -1); + if(result.shouldStop(ray)){ + return; + } + } + } + } + } +}; +},{"../math/vec2":30,"./Shape":45}],39:[function(_dereq_,module,exports){ +var Shape = _dereq_('./Shape') +, vec2 = _dereq_('../math/vec2'); + +module.exports = Circle; + +/** + * Circle shape class. + * @class Circle + * @extends Shape + * @constructor + * @param {options} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) + * @param {number} [options.radius=1] The radius of this circle + * + * @example + * var circleShape = new Circle({ radius: 1 }); + * body.addShape(circleShape); + */ +function Circle(options){ + if(typeof(arguments[0]) === 'number'){ + options = { + radius: arguments[0] + }; + console.warn('The Circle constructor signature has changed. Please use the following format: new Circle({ radius: 1 })'); + } + options = options || {}; + + /** + * The radius of the circle. + * @property radius + * @type {number} + */ + this.radius = options.radius || 1; + + options.type = Shape.CIRCLE; + Shape.call(this, options); +} +Circle.prototype = new Shape(); +Circle.prototype.constructor = Circle; + +/** + * @method computeMomentOfInertia + * @param {Number} mass + * @return {Number} + */ +Circle.prototype.computeMomentOfInertia = function(mass){ + var r = this.radius; + return mass * r * r / 2; +}; + +/** + * @method updateBoundingRadius + * @return {Number} + */ +Circle.prototype.updateBoundingRadius = function(){ + this.boundingRadius = this.radius; +}; + +/** + * @method updateArea + * @return {Number} + */ +Circle.prototype.updateArea = function(){ + this.area = Math.PI * this.radius * this.radius; +}; + +/** + * @method computeAABB + * @param {AABB} out The resulting AABB. + * @param {Array} position + * @param {Number} angle + */ +Circle.prototype.computeAABB = function(out, position, angle){ + var r = this.radius; + vec2.set(out.upperBound, r, r); + vec2.set(out.lowerBound, -r, -r); + if(position){ + vec2.add(out.lowerBound, out.lowerBound, position); + vec2.add(out.upperBound, out.upperBound, position); + } +}; + +var Ray_intersectSphere_intersectionPoint = vec2.create(); +var Ray_intersectSphere_normal = vec2.create(); + +/** + * @method raycast + * @param {RaycastResult} result + * @param {Ray} ray + * @param {array} position + * @param {number} angle + */ +Circle.prototype.raycast = function(result, ray, position, angle){ + var from = ray.from, + to = ray.to, + r = this.radius; + + var a = Math.pow(to[0] - from[0], 2) + Math.pow(to[1] - from[1], 2); + var b = 2 * ((to[0] - from[0]) * (from[0] - position[0]) + (to[1] - from[1]) * (from[1] - position[1])); + var c = Math.pow(from[0] - position[0], 2) + Math.pow(from[1] - position[1], 2) - Math.pow(r, 2); + var delta = Math.pow(b, 2) - 4 * a * c; + + var intersectionPoint = Ray_intersectSphere_intersectionPoint; + var normal = Ray_intersectSphere_normal; + + if(delta < 0){ + // No intersection + return; + + } else if(delta === 0){ + // single intersection point + vec2.lerp(intersectionPoint, from, to, delta); + + vec2.sub(normal, intersectionPoint, position); + vec2.normalize(normal,normal); + + ray.reportIntersection(result, delta, normal, -1); + + } else { + var sqrtDelta = Math.sqrt(delta); + var inv2a = 1 / (2 * a); + var d1 = (- b - sqrtDelta) * inv2a; + var d2 = (- b + sqrtDelta) * inv2a; + + if(d1 >= 0 && d1 <= 1){ + vec2.lerp(intersectionPoint, from, to, d1); + + vec2.sub(normal, intersectionPoint, position); + vec2.normalize(normal,normal); + + ray.reportIntersection(result, d1, normal, -1); + + if(result.shouldStop(ray)){ + return; + } + } + + if(d2 >= 0 && d2 <= 1){ + vec2.lerp(intersectionPoint, from, to, d2); + + vec2.sub(normal, intersectionPoint, position); + vec2.normalize(normal,normal); + + ray.reportIntersection(result, d2, normal, -1); + } + } +}; +},{"../math/vec2":30,"./Shape":45}],40:[function(_dereq_,module,exports){ +var Shape = _dereq_('./Shape') +, vec2 = _dereq_('../math/vec2') +, polyk = _dereq_('../math/polyk') +, decomp = _dereq_('poly-decomp'); + +module.exports = Convex; + +/** + * Convex shape class. + * @class Convex + * @constructor + * @extends Shape + * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) + * @param {Array} [options.vertices] An array of vertices that span this shape. Vertices are given in counter-clockwise (CCW) direction. + * @param {Array} [options.axes] An array of unit length vectors, representing the symmetry axes in the convex. + * @example + * // Create a box + * var vertices = [[-1,-1], [1,-1], [1,1], [-1,1]]; + * var convexShape = new Convex({ vertices: vertices }); + * body.addShape(convexShape); + */ +function Convex(options){ + if(Array.isArray(arguments[0])){ + options = { + vertices: arguments[0], + axes: arguments[1] + }; + console.warn('The Convex constructor signature has changed. Please use the following format: new Convex({ vertices: [...], ... })'); + } + options = options || {}; + + /** + * Vertices defined in the local frame. + * @property vertices + * @type {Array} + */ + this.vertices = []; + + // Copy the verts + var vertices = options.vertices !== undefined ? options.vertices : []; + for(var i=0; i < vertices.length; i++){ + var v = vec2.create(); + vec2.copy(v, vertices[i]); + this.vertices.push(v); + } + + /** + * Axes defined in the local frame. + * @property axes + * @type {Array} + */ + this.axes = []; + + if(options.axes){ + + // Copy the axes + for(var i=0; i < options.axes.length; i++){ + var axis = vec2.create(); + vec2.copy(axis, options.axes[i]); + this.axes.push(axis); + } + + } else { + + // Construct axes from the vertex data + for(var i = 0; i < this.vertices.length; i++){ + // Get the world edge + var worldPoint0 = this.vertices[i]; + var worldPoint1 = this.vertices[(i+1) % this.vertices.length]; + + var normal = vec2.create(); + vec2.sub(normal, worldPoint1, worldPoint0); + + // Get normal - just rotate 90 degrees since vertices are given in CCW + vec2.rotate90cw(normal, normal); + vec2.normalize(normal, normal); + + this.axes.push(normal); + } + + } + + /** + * The center of mass of the Convex + * @property centerOfMass + * @type {Array} + */ + this.centerOfMass = vec2.fromValues(0,0); + + /** + * Triangulated version of this convex. The structure is Array of 3-Arrays, and each subarray contains 3 integers, referencing the vertices. + * @property triangles + * @type {Array} + */ + this.triangles = []; + + if(this.vertices.length){ + this.updateTriangles(); + this.updateCenterOfMass(); + } + + /** + * The bounding radius of the convex + * @property boundingRadius + * @type {Number} + */ + this.boundingRadius = 0; + + options.type = Shape.CONVEX; + Shape.call(this, options); + + this.updateBoundingRadius(); + this.updateArea(); + if(this.area < 0){ + throw new Error("Convex vertices must be given in conter-clockwise winding."); + } +} +Convex.prototype = new Shape(); +Convex.prototype.constructor = Convex; + +var tmpVec1 = vec2.create(); +var tmpVec2 = vec2.create(); + +/** + * Project a Convex onto a world-oriented axis + * @method projectOntoAxis + * @static + * @param {Array} offset + * @param {Array} localAxis + * @param {Array} result + */ +Convex.prototype.projectOntoLocalAxis = function(localAxis, result){ + var max=null, + min=null, + v, + value, + localAxis = tmpVec1; + + // Get projected position of all vertices + for(var i=0; i max){ + max = value; + } + if(min === null || value < min){ + min = value; + } + } + + if(min > max){ + var t = min; + min = max; + max = t; + } + + vec2.set(result, min, max); +}; + +Convex.prototype.projectOntoWorldAxis = function(localAxis, shapeOffset, shapeAngle, result){ + var worldAxis = tmpVec2; + + this.projectOntoLocalAxis(localAxis, result); + + // Project the position of the body onto the axis - need to add this to the result + if(shapeAngle !== 0){ + vec2.rotate(worldAxis, localAxis, shapeAngle); + } else { + worldAxis = localAxis; + } + var offset = vec2.dot(shapeOffset, worldAxis); + + vec2.set(result, result[0] + offset, result[1] + offset); +}; + + +/** + * Update the .triangles property + * @method updateTriangles + */ +Convex.prototype.updateTriangles = function(){ + + this.triangles.length = 0; + + // Rewrite on polyk notation, array of numbers + var polykVerts = []; + for(var i=0; i r2){ + r2 = l2; + } + } + + this.boundingRadius = Math.sqrt(r2); +}; + +/** + * Get the area of the triangle spanned by the three points a, b, c. The area is positive if the points are given in counter-clockwise order, otherwise negative. + * @static + * @method triangleArea + * @param {Array} a + * @param {Array} b + * @param {Array} c + * @return {Number} + */ +Convex.triangleArea = function(a,b,c){ + return (((b[0] - a[0])*(c[1] - a[1]))-((c[0] - a[0])*(b[1] - a[1]))) * 0.5; +}; + +/** + * Update the .area + * @method updateArea + */ +Convex.prototype.updateArea = function(){ + this.updateTriangles(); + this.area = 0; + + var triangles = this.triangles, + verts = this.vertices; + for(var i=0; i!==triangles.length; i++){ + var t = triangles[i], + a = verts[t[0]], + b = verts[t[1]], + c = verts[t[2]]; + + // Get mass for the triangle (density=1 in this case) + var m = Convex.triangleArea(a,b,c); + this.area += m; + } +}; + +/** + * @method computeAABB + * @param {AABB} out + * @param {Array} position + * @param {Number} angle + */ +Convex.prototype.computeAABB = function(out, position, angle){ + out.setFromPoints(this.vertices, position, angle, 0); +}; + +var intersectConvex_rayStart = vec2.create(); +var intersectConvex_rayEnd = vec2.create(); +var intersectConvex_normal = vec2.create(); + +/** + * @method raycast + * @param {RaycastResult} result + * @param {Ray} ray + * @param {array} position + * @param {number} angle + */ +Convex.prototype.raycast = function(result, ray, position, angle){ + var rayStart = intersectConvex_rayStart; + var rayEnd = intersectConvex_rayEnd; + var normal = intersectConvex_normal; + var vertices = this.vertices; + + // Transform to local shape space + vec2.toLocalFrame(rayStart, ray.from, position, angle); + vec2.toLocalFrame(rayEnd, ray.to, position, angle); + + var n = vertices.length; + + for (var i = 0; i < n && !result.shouldStop(ray); i++) { + var q1 = vertices[i]; + var q2 = vertices[(i+1) % n]; + var delta = vec2.getLineSegmentsIntersectionFraction(rayStart, rayEnd, q1, q2); + + if(delta >= 0){ + vec2.sub(normal, q2, q1); + vec2.rotate(normal, normal, -Math.PI / 2 + angle); + vec2.normalize(normal, normal); + ray.reportIntersection(result, delta, normal, i); + } + } +}; + +},{"../math/polyk":29,"../math/vec2":30,"./Shape":45,"poly-decomp":5}],41:[function(_dereq_,module,exports){ +var Shape = _dereq_('./Shape') +, vec2 = _dereq_('../math/vec2') +, Utils = _dereq_('../utils/Utils'); + +module.exports = Heightfield; + +/** + * Heightfield shape class. Height data is given as an array. These data points are spread out evenly with a distance "elementWidth". + * @class Heightfield + * @extends Shape + * @constructor + * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) + * @param {array} [options.heights] An array of Y values that will be used to construct the terrain. + * @param {Number} [options.minValue] Minimum value of the data points in the data array. Will be computed automatically if not given. + * @param {Number} [options.maxValue] Maximum value. + * @param {Number} [options.elementWidth=0.1] World spacing between the data points in X direction. + * + * @example + * // Generate some height data (y-values). + * var heights = []; + * for(var i = 0; i < 1000; i++){ + * var y = 0.5 * Math.cos(0.2 * i); + * heights.push(y); + * } + * + * // Create the heightfield shape + * var heightfieldShape = new Heightfield({ + * heights: heights, + * elementWidth: 1 // Distance between the data points in X direction + * }); + * var heightfieldBody = new Body(); + * heightfieldBody.addShape(heightfieldShape); + * world.addBody(heightfieldBody); + * + * @todo Should use a scale property with X and Y direction instead of just elementWidth + */ +function Heightfield(options){ + if(Array.isArray(arguments[0])){ + options = { + heights: arguments[0] + }; + + if(typeof(arguments[1]) === 'object'){ + for(var key in arguments[1]){ + options[key] = arguments[1][key]; + } + } + + console.warn('The Heightfield constructor signature has changed. Please use the following format: new Heightfield({ heights: [...], ... })'); + } + options = options || {}; + + /** + * An array of numbers, or height values, that are spread out along the x axis. + * @property {array} heights + */ + this.heights = options.heights ? options.heights.slice(0) : []; + + /** + * Max value of the heights + * @property {number} maxValue + */ + this.maxValue = options.maxValue || null; + + /** + * Max value of the heights + * @property {number} minValue + */ + this.minValue = options.minValue || null; + + /** + * The width of each element + * @property {number} elementWidth + */ + this.elementWidth = options.elementWidth || 0.1; + + if(options.maxValue === undefined || options.minValue === undefined){ + this.updateMaxMinValues(); + } + + options.type = Shape.HEIGHTFIELD; + Shape.call(this, options); +} +Heightfield.prototype = new Shape(); +Heightfield.prototype.constructor = Heightfield; + +/** + * Update the .minValue and the .maxValue + * @method updateMaxMinValues + */ +Heightfield.prototype.updateMaxMinValues = function(){ + var data = this.heights; + var maxValue = data[0]; + var minValue = data[0]; + for(var i=0; i !== data.length; i++){ + var v = data[i]; + if(v > maxValue){ + maxValue = v; + } + if(v < minValue){ + minValue = v; + } + } + this.maxValue = maxValue; + this.minValue = minValue; +}; + +/** + * @method computeMomentOfInertia + * @param {Number} mass + * @return {Number} + */ +Heightfield.prototype.computeMomentOfInertia = function(mass){ + return Number.MAX_VALUE; +}; + +Heightfield.prototype.updateBoundingRadius = function(){ + this.boundingRadius = Number.MAX_VALUE; +}; + +Heightfield.prototype.updateArea = function(){ + var data = this.heights, + area = 0; + for(var i=0; i= 0 && s <= 1 && t >= 0 && t <= 1) { // Collision detected + var intX = p0[0] + (t * s1_x); + var intY = p0[1] + (t * s1_y); + out[0] = intX; + out[1] = intY; + return t; + } + return -1; // No collision +} + +/** + * @method raycast + * @param {RayResult} result + * @param {Ray} ray + * @param {array} position + * @param {number} angle + */ +Heightfield.prototype.raycast = function(result, ray, position, angle){ + var from = ray.from; + var to = ray.to; + var direction = ray.direction; + + var hitPointWorld = intersectHeightfield_hitPointWorld; + var worldNormal = intersectHeightfield_worldNormal; + var l0 = intersectHeightfield_l0; + var l1 = intersectHeightfield_l1; + var localFrom = intersectHeightfield_localFrom; + var localTo = intersectHeightfield_localTo; + + // get local ray start and end + vec2.toLocalFrame(localFrom, from, position, angle); + vec2.toLocalFrame(localTo, to, position, angle); + + // Get the segment range + var i0 = this.getClampedSegmentIndex(localFrom); + var i1 = this.getClampedSegmentIndex(localTo); + if(i0 > i1){ + var tmp = i0; + i0 = i1; + i1 = tmp; + } + + // The segments + for(var i=0; i= 0){ + vec2.sub(worldNormal, l1, l0); + vec2.rotate(worldNormal, worldNormal, angle + Math.PI / 2); + vec2.normalize(worldNormal, worldNormal); + ray.reportIntersection(result, t, worldNormal, -1); + if(result.shouldStop(ray)){ + return; + } + } + } +}; +},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],42:[function(_dereq_,module,exports){ +var Shape = _dereq_('./Shape') +, vec2 = _dereq_('../math/vec2'); + +module.exports = Line; + +/** + * Line shape class. The line shape is along the x direction, and stretches from [-length/2, 0] to [length/2,0]. + * @class Line + * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) + * @param {Number} [options.length=1] The total length of the line + * @extends Shape + * @constructor + */ +function Line(options){ + if(typeof(arguments[0]) === 'number'){ + options = { + length: arguments[0] + }; + console.warn('The Line constructor signature has changed. Please use the following format: new Line({ length: 1, ... })'); + } + options = options || {}; + + /** + * Length of this line + * @property {Number} length + * @default 1 + */ + this.length = options.length || 1; + + options.type = Shape.LINE; + Shape.call(this, options); +} +Line.prototype = new Shape(); +Line.prototype.constructor = Line; + +Line.prototype.computeMomentOfInertia = function(mass){ + return mass * Math.pow(this.length,2) / 12; +}; + +Line.prototype.updateBoundingRadius = function(){ + this.boundingRadius = this.length/2; +}; + +var points = [vec2.create(),vec2.create()]; + +/** + * @method computeAABB + * @param {AABB} out The resulting AABB. + * @param {Array} position + * @param {Number} angle + */ +Line.prototype.computeAABB = function(out, position, angle){ + var l2 = this.length / 2; + vec2.set(points[0], -l2, 0); + vec2.set(points[1], l2, 0); + out.setFromPoints(points,position,angle,0); +}; + +var raycast_hitPoint = vec2.create(); +var raycast_normal = vec2.create(); +var raycast_l0 = vec2.create(); +var raycast_l1 = vec2.create(); +var raycast_unit_y = vec2.fromValues(0,1); + +/** + * @method raycast + * @param {RaycastResult} result + * @param {Ray} ray + * @param {number} angle + * @param {array} position + */ +Line.prototype.raycast = function(result, ray, position, angle){ + var from = ray.from; + var to = ray.to; + + var l0 = raycast_l0; + var l1 = raycast_l1; + + // get start and end of the line + var halfLen = this.length / 2; + vec2.set(l0, -halfLen, 0); + vec2.set(l1, halfLen, 0); + vec2.toGlobalFrame(l0, l0, position, angle); + vec2.toGlobalFrame(l1, l1, position, angle); + + var fraction = vec2.getLineSegmentsIntersectionFraction(l0, l1, from, to); + if(fraction >= 0){ + var normal = raycast_normal; + vec2.rotate(normal, raycast_unit_y, angle); // todo: this should depend on which side the ray comes from + ray.reportIntersection(result, fraction, normal, -1); + } +}; +},{"../math/vec2":30,"./Shape":45}],43:[function(_dereq_,module,exports){ +var Shape = _dereq_('./Shape') +, vec2 = _dereq_('../math/vec2'); + +module.exports = Particle; + +/** + * Particle shape class. + * @class Particle + * @constructor + * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) + * @extends Shape + */ +function Particle(options){ + options = options || {}; + options.type = Shape.PARTICLE; + Shape.call(this, options); +} +Particle.prototype = new Shape(); +Particle.prototype.constructor = Particle; + +Particle.prototype.computeMomentOfInertia = function(mass){ + return 0; // Can't rotate a particle +}; + +Particle.prototype.updateBoundingRadius = function(){ + this.boundingRadius = 0; +}; + +/** + * @method computeAABB + * @param {AABB} out + * @param {Array} position + * @param {Number} angle + */ +Particle.prototype.computeAABB = function(out, position, angle){ + vec2.copy(out.lowerBound, position); + vec2.copy(out.upperBound, position); +}; + +},{"../math/vec2":30,"./Shape":45}],44:[function(_dereq_,module,exports){ +var Shape = _dereq_('./Shape') +, vec2 = _dereq_('../math/vec2') +, Utils = _dereq_('../utils/Utils'); + +module.exports = Plane; + +/** + * Plane shape class. The plane is facing in the Y direction. + * @class Plane + * @extends Shape + * @constructor + * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) + */ +function Plane(options){ + options = options || {}; + options.type = Shape.PLANE; + Shape.call(this, options); +} +Plane.prototype = new Shape(); +Plane.prototype.constructor = Plane; + +/** + * Compute moment of inertia + * @method computeMomentOfInertia + */ +Plane.prototype.computeMomentOfInertia = function(mass){ + return 0; // Plane is infinite. The inertia should therefore be infinty but by convention we set 0 here +}; + +/** + * Update the bounding radius + * @method updateBoundingRadius + */ +Plane.prototype.updateBoundingRadius = function(){ + this.boundingRadius = Number.MAX_VALUE; +}; + +/** + * @method computeAABB + * @param {AABB} out + * @param {Array} position + * @param {Number} angle + */ +Plane.prototype.computeAABB = function(out, position, angle){ + var a = angle % (2 * Math.PI); + var set = vec2.set; + var max = Number.MAX_VALUE; + var lowerBound = out.lowerBound; + var upperBound = out.upperBound; + + if(a === 0){ + // y goes from -inf to 0 + set(lowerBound, -max, -max); + set(upperBound, max, 0); + + } else if(a === Math.PI / 2){ + + // x goes from 0 to inf + set(lowerBound, 0, -max); + set(upperBound, max, max); + + } else if(a === Math.PI){ + + // y goes from 0 to inf + set(lowerBound, -max, 0); + set(upperBound, max, max); + + } else if(a === 3*Math.PI/2){ + + // x goes from -inf to 0 + set(lowerBound, -max, -max); + set(upperBound, 0, max); + + } else { + + // Set max bounds + set(lowerBound, -max, -max); + set(upperBound, max, max); + } + + vec2.add(lowerBound, lowerBound, position); + vec2.add(upperBound, upperBound, position); +}; + +Plane.prototype.updateArea = function(){ + this.area = Number.MAX_VALUE; +}; + +var intersectPlane_planePointToFrom = vec2.create(); +var intersectPlane_dir_scaled_with_t = vec2.create(); +var intersectPlane_hitPoint = vec2.create(); +var intersectPlane_normal = vec2.create(); +var intersectPlane_len = vec2.create(); + +/** + * @method raycast + * @param {RayResult} result + * @param {Ray} ray + * @param {array} position + * @param {number} angle + */ +Plane.prototype.raycast = function(result, ray, position, angle){ + var from = ray.from; + var to = ray.to; + var direction = ray.direction; + var planePointToFrom = intersectPlane_planePointToFrom; + var dir_scaled_with_t = intersectPlane_dir_scaled_with_t; + var hitPoint = intersectPlane_hitPoint; + var normal = intersectPlane_normal; + var len = intersectPlane_len; + + // Get plane normal + vec2.set(normal, 0, 1); + vec2.rotate(normal, normal, angle); + + vec2.sub(len, from, position); + var planeToFrom = vec2.dot(len, normal); + vec2.sub(len, to, position); + var planeToTo = vec2.dot(len, normal); + + if(planeToFrom * planeToTo > 0){ + // "from" and "to" are on the same side of the plane... bail out + return; + } + + if(vec2.squaredDistance(from, to) < planeToFrom * planeToFrom){ + return; + } + + var n_dot_dir = vec2.dot(normal, direction); + + vec2.sub(planePointToFrom, from, position); + var t = -vec2.dot(normal, planePointToFrom) / n_dot_dir / ray.length; + + ray.reportIntersection(result, t, normal, -1); +}; +},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],45:[function(_dereq_,module,exports){ +module.exports = Shape; + +var vec2 = _dereq_('../math/vec2'); + +/** + * Base class for shapes. + * @class Shape + * @constructor + * @param {object} [options] + * @param {array} [options.position] + * @param {number} [options.angle=0] + * @param {number} [options.collisionGroup=1] + * @param {number} [options.collisionMask=1] + * @param {boolean} [options.sensor=false] + * @param {boolean} [options.collisionResponse=true] + * @param {object} [options.type=0] + */ +function Shape(options){ + options = options || {}; + + /** + * The body this shape is attached to. A shape can only be attached to a single body. + * @property {Body} body + */ + this.body = null; + + /** + * Body-local position of the shape. + * @property {Array} position + */ + this.position = vec2.fromValues(0,0); + if(options.position){ + vec2.copy(this.position, options.position); + } + + /** + * Body-local angle of the shape. + * @property {number} angle + */ + this.angle = options.angle || 0; + + /** + * The type of the shape. One of: + * + * * {{#crossLink "Shape/CIRCLE:property"}}Shape.CIRCLE{{/crossLink}} + * * {{#crossLink "Shape/PARTICLE:property"}}Shape.PARTICLE{{/crossLink}} + * * {{#crossLink "Shape/PLANE:property"}}Shape.PLANE{{/crossLink}} + * * {{#crossLink "Shape/CONVEX:property"}}Shape.CONVEX{{/crossLink}} + * * {{#crossLink "Shape/LINE:property"}}Shape.LINE{{/crossLink}} + * * {{#crossLink "Shape/BOX:property"}}Shape.BOX{{/crossLink}} + * * {{#crossLink "Shape/CAPSULE:property"}}Shape.CAPSULE{{/crossLink}} + * * {{#crossLink "Shape/HEIGHTFIELD:property"}}Shape.HEIGHTFIELD{{/crossLink}} + * + * @property {number} type + */ + this.type = options.type || 0; + + /** + * Shape object identifier. + * @type {Number} + * @property id + */ + this.id = Shape.idCounter++; + + /** + * Bounding circle radius of this shape + * @property boundingRadius + * @type {Number} + */ + this.boundingRadius = 0; + + /** + * Collision group that this shape belongs to (bit mask). See this tutorial. + * @property collisionGroup + * @type {Number} + * @example + * // Setup bits for each available group + * var PLAYER = Math.pow(2,0), + * ENEMY = Math.pow(2,1), + * GROUND = Math.pow(2,2) + * + * // Put shapes into their groups + * player1Shape.collisionGroup = PLAYER; + * player2Shape.collisionGroup = PLAYER; + * enemyShape .collisionGroup = ENEMY; + * groundShape .collisionGroup = GROUND; + * + * // Assign groups that each shape collide with. + * // Note that the players can collide with ground and enemies, but not with other players. + * player1Shape.collisionMask = ENEMY | GROUND; + * player2Shape.collisionMask = ENEMY | GROUND; + * enemyShape .collisionMask = PLAYER | GROUND; + * groundShape .collisionMask = PLAYER | ENEMY; + * + * @example + * // How collision check is done + * if(shapeA.collisionGroup & shapeB.collisionMask)!=0 && (shapeB.collisionGroup & shapeA.collisionMask)!=0){ + * // The shapes will collide + * } + */ + this.collisionGroup = options.collisionGroup !== undefined ? options.collisionGroup : 1; + + /** + * Whether to produce contact forces when in contact with other bodies. Note that contacts will be generated, but they will be disabled. That means that this shape will move through other body shapes, but it will still trigger contact events, etc. + * @property {Boolean} collisionResponse + */ + this.collisionResponse = options.collisionResponse !== undefined ? options.collisionResponse : true; + + /** + * Collision mask of this shape. See .collisionGroup. + * @property collisionMask + * @type {Number} + */ + this.collisionMask = options.collisionMask !== undefined ? options.collisionMask : 1; + + /** + * Material to use in collisions for this Shape. If this is set to null, the world will use default material properties instead. + * @property material + * @type {Material} + */ + this.material = options.material || null; + + /** + * Area of this shape. + * @property area + * @type {Number} + */ + this.area = 0; + + /** + * Set to true if you want this shape to be a sensor. A sensor does not generate contacts, but it still reports contact events. This is good if you want to know if a shape is overlapping another shape, without them generating contacts. + * @property {Boolean} sensor + */ + this.sensor = options.sensor !== undefined ? options.sensor : false; + + if(this.type){ + this.updateBoundingRadius(); + } + + this.updateArea(); +} + +Shape.idCounter = 0; + +/** + * @static + * @property {Number} CIRCLE + */ +Shape.CIRCLE = 1; + +/** + * @static + * @property {Number} PARTICLE + */ +Shape.PARTICLE = 2; + +/** + * @static + * @property {Number} PLANE + */ +Shape.PLANE = 4; + +/** + * @static + * @property {Number} CONVEX + */ +Shape.CONVEX = 8; + +/** + * @static + * @property {Number} LINE + */ +Shape.LINE = 16; + +/** + * @static + * @property {Number} BOX + */ +Shape.BOX = 32; + +Object.defineProperty(Shape, 'RECTANGLE', { + get: function() { + console.warn('Shape.RECTANGLE is deprecated, use Shape.BOX instead.'); + return Shape.BOX; + } +}); + +/** + * @static + * @property {Number} CAPSULE + */ +Shape.CAPSULE = 64; + +/** + * @static + * @property {Number} HEIGHTFIELD + */ +Shape.HEIGHTFIELD = 128; + +/** + * Should return the moment of inertia around the Z axis of the body given the total mass. See Wikipedia's list of moments of inertia. + * @method computeMomentOfInertia + * @param {Number} mass + * @return {Number} If the inertia is infinity or if the object simply isn't possible to rotate, return 0. + */ +Shape.prototype.computeMomentOfInertia = function(mass){}; + +/** + * Returns the bounding circle radius of this shape. + * @method updateBoundingRadius + * @return {Number} + */ +Shape.prototype.updateBoundingRadius = function(){}; + +/** + * Update the .area property of the shape. + * @method updateArea + */ +Shape.prototype.updateArea = function(){ + // To be implemented in all subclasses +}; + +/** + * Compute the world axis-aligned bounding box (AABB) of this shape. + * @method computeAABB + * @param {AABB} out The resulting AABB. + * @param {Array} position World position of the shape. + * @param {Number} angle World angle of the shape. + */ +Shape.prototype.computeAABB = function(out, position, angle){ + // To be implemented in each subclass +}; + +/** + * Perform raycasting on this shape. + * @method raycast + * @param {RayResult} result Where to store the resulting data. + * @param {Ray} ray The Ray that you want to use for raycasting. + * @param {array} position World position of the shape (the .position property will be ignored). + * @param {number} angle World angle of the shape (the .angle property will be ignored). + */ +Shape.prototype.raycast = function(result, ray, position, angle){ + // To be implemented in each subclass +}; +},{"../math/vec2":30}],46:[function(_dereq_,module,exports){ +var vec2 = _dereq_('../math/vec2') +, Solver = _dereq_('./Solver') +, Utils = _dereq_('../utils/Utils') +, FrictionEquation = _dereq_('../equations/FrictionEquation'); + +module.exports = GSSolver; + +/** + * Iterative Gauss-Seidel constraint equation solver. + * + * @class GSSolver + * @constructor + * @extends Solver + * @param {Object} [options] + * @param {Number} [options.iterations=10] + * @param {Number} [options.tolerance=0] + */ +function GSSolver(options){ + Solver.call(this,options,Solver.GS); + options = options || {}; + + /** + * The max number of iterations to do when solving. More gives better results, but is more expensive. + * @property iterations + * @type {Number} + */ + this.iterations = options.iterations || 10; + + /** + * The error tolerance, per constraint. If the total error is below this limit, the solver will stop iterating. Set to zero for as good solution as possible, but to something larger than zero to make computations faster. + * @property tolerance + * @type {Number} + * @default 1e-7 + */ + this.tolerance = options.tolerance || 1e-7; + + this.arrayStep = 30; + this.lambda = new Utils.ARRAY_TYPE(this.arrayStep); + this.Bs = new Utils.ARRAY_TYPE(this.arrayStep); + this.invCs = new Utils.ARRAY_TYPE(this.arrayStep); + + /** + * Set to true to set all right hand side terms to zero when solving. Can be handy for a few applications. + * @property useZeroRHS + * @type {Boolean} + */ + this.useZeroRHS = false; + + /** + * Number of solver iterations that are done to approximate normal forces. When these iterations are done, friction force will be computed from the contact normal forces. These friction forces will override any other friction forces set from the World for example. + * The solver will use less iterations if the solution is below the .tolerance. + * @property frictionIterations + * @type {Number} + */ + this.frictionIterations = 0; + + /** + * The number of iterations that were made during the last solve. If .tolerance is zero, this value will always be equal to .iterations, but if .tolerance is larger than zero, and the solver can quit early, then this number will be somewhere between 1 and .iterations. + * @property {Number} usedIterations + */ + this.usedIterations = 0; +} +GSSolver.prototype = new Solver(); +GSSolver.prototype.constructor = GSSolver; + +function setArrayZero(array){ + var l = array.length; + while(l--){ + array[l] = +0.0; + } +} + +/** + * Solve the system of equations + * @method solve + * @param {Number} h Time step + * @param {World} world World to solve + */ +GSSolver.prototype.solve = function(h, world){ + + this.sortEquations(); + + var iter = 0, + maxIter = this.iterations, + maxFrictionIter = this.frictionIterations, + equations = this.equations, + Neq = equations.length, + tolSquared = Math.pow(this.tolerance*Neq, 2), + bodies = world.bodies, + Nbodies = world.bodies.length, + add = vec2.add, + set = vec2.set, + useZeroRHS = this.useZeroRHS, + lambda = this.lambda; + + this.usedIterations = 0; + + if(Neq){ + for(var i=0; i!==Nbodies; i++){ + var b = bodies[i]; + + // Update solve mass + b.updateSolveMassProperties(); + } + } + + // Things that does not change during iteration can be computed once + if(lambda.length < Neq){ + lambda = this.lambda = new Utils.ARRAY_TYPE(Neq + this.arrayStep); + this.Bs = new Utils.ARRAY_TYPE(Neq + this.arrayStep); + this.invCs = new Utils.ARRAY_TYPE(Neq + this.arrayStep); + } + setArrayZero(lambda); + var invCs = this.invCs, + Bs = this.Bs, + lambda = this.lambda; + + for(var i=0; i!==equations.length; i++){ + var c = equations[i]; + if(c.timeStep !== h || c.needsUpdate){ + c.timeStep = h; + c.update(); + } + Bs[i] = c.computeB(c.a,c.b,h); + invCs[i] = c.computeInvC(c.epsilon); + } + + var q, B, c, deltalambdaTot,i,j; + + if(Neq !== 0){ + + for(i=0; i!==Nbodies; i++){ + var b = bodies[i]; + + // Reset vlambda + b.resetConstraintVelocity(); + } + + if(maxFrictionIter){ + // Iterate over contact equations to get normal forces + for(iter=0; iter!==maxFrictionIter; iter++){ + + // Accumulate the total error for each iteration. + deltalambdaTot = 0.0; + + for(j=0; j!==Neq; j++){ + c = equations[j]; + + var deltalambda = GSSolver.iterateEquation(j,c,c.epsilon,Bs,invCs,lambda,useZeroRHS,h,iter); + deltalambdaTot += Math.abs(deltalambda); + } + + this.usedIterations++; + + // If the total error is small enough - stop iterate + if(deltalambdaTot*deltalambdaTot <= tolSquared){ + break; + } + } + + GSSolver.updateMultipliers(equations, lambda, 1/h); + + // Set computed friction force + for(j=0; j!==Neq; j++){ + var eq = equations[j]; + if(eq instanceof FrictionEquation){ + var f = 0.0; + for(var k=0; k!==eq.contactEquations.length; k++){ + f += eq.contactEquations[k].multiplier; + } + f *= eq.frictionCoefficient / eq.contactEquations.length; + eq.maxForce = f; + eq.minForce = -f; + } + } + } + + // Iterate over all equations + for(iter=0; iter!==maxIter; iter++){ + + // Accumulate the total error for each iteration. + deltalambdaTot = 0.0; + + for(j=0; j!==Neq; j++){ + c = equations[j]; + + var deltalambda = GSSolver.iterateEquation(j,c,c.epsilon,Bs,invCs,lambda,useZeroRHS,h,iter); + deltalambdaTot += Math.abs(deltalambda); + } + + this.usedIterations++; + + // If the total error is small enough - stop iterate + if(deltalambdaTot*deltalambdaTot <= tolSquared){ + break; + } + } + + // Add result to velocity + for(i=0; i!==Nbodies; i++){ + bodies[i].addConstraintVelocity(); + } + + GSSolver.updateMultipliers(equations, lambda, 1/h); + } +}; + +// Sets the .multiplier property of each equation +GSSolver.updateMultipliers = function(equations, lambda, invDt){ + // Set the .multiplier property of each equation + var l = equations.length; + while(l--){ + equations[l].multiplier = lambda[l] * invDt; + } +}; + +GSSolver.iterateEquation = function(j,eq,eps,Bs,invCs,lambda,useZeroRHS,dt,iter){ + // Compute iteration + var B = Bs[j], + invC = invCs[j], + lambdaj = lambda[j], + GWlambda = eq.computeGWlambda(); + + var maxForce = eq.maxForce, + minForce = eq.minForce; + + if(useZeroRHS){ + B = 0; + } + + var deltalambda = invC * ( B - GWlambda - eps * lambdaj ); + + // Clamp if we are not within the min/max interval + var lambdaj_plus_deltalambda = lambdaj + deltalambda; + if(lambdaj_plus_deltalambda < minForce*dt){ + deltalambda = minForce*dt - lambdaj; + } else if(lambdaj_plus_deltalambda > maxForce*dt){ + deltalambda = maxForce*dt - lambdaj; + } + lambda[j] += deltalambda; + eq.addToWlambda(deltalambda); + + return deltalambda; +}; + +},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":57,"./Solver":47}],47:[function(_dereq_,module,exports){ +var Utils = _dereq_('../utils/Utils') +, EventEmitter = _dereq_('../events/EventEmitter'); + +module.exports = Solver; + +/** + * Base class for constraint solvers. + * @class Solver + * @constructor + * @extends EventEmitter + */ +function Solver(options,type){ + options = options || {}; + + EventEmitter.call(this); + + this.type = type; + + /** + * Current equations in the solver. + * + * @property equations + * @type {Array} + */ + this.equations = []; + + /** + * Function that is used to sort all equations before each solve. + * @property equationSortFunction + * @type {function|boolean} + */ + this.equationSortFunction = options.equationSortFunction || false; +} +Solver.prototype = new EventEmitter(); +Solver.prototype.constructor = Solver; + +/** + * Method to be implemented in each subclass + * @method solve + * @param {Number} dt + * @param {World} world + */ +Solver.prototype.solve = function(dt,world){ + throw new Error("Solver.solve should be implemented by subclasses!"); +}; + +var mockWorld = {bodies:[]}; + +/** + * Solves all constraints in an island. + * @method solveIsland + * @param {Number} dt + * @param {Island} island + */ +Solver.prototype.solveIsland = function(dt,island){ + + this.removeAllEquations(); + + if(island.equations.length){ + // Add equations to solver + this.addEquations(island.equations); + mockWorld.bodies.length = 0; + island.getBodies(mockWorld.bodies); + + // Solve + if(mockWorld.bodies.length){ + this.solve(dt,mockWorld); + } + } +}; + +/** + * Sort all equations using the .equationSortFunction. Should be called by subclasses before solving. + * @method sortEquations + */ +Solver.prototype.sortEquations = function(){ + if(this.equationSortFunction){ + this.equations.sort(this.equationSortFunction); + } +}; + +/** + * Add an equation to be solved. + * + * @method addEquation + * @param {Equation} eq + */ +Solver.prototype.addEquation = function(eq){ + if(eq.enabled){ + this.equations.push(eq); + } +}; + +/** + * Add equations. Same as .addEquation, but this time the argument is an array of Equations + * + * @method addEquations + * @param {Array} eqs + */ +Solver.prototype.addEquations = function(eqs){ + //Utils.appendArray(this.equations,eqs); + for(var i=0, N=eqs.length; i!==N; i++){ + var eq = eqs[i]; + if(eq.enabled){ + this.equations.push(eq); + } + } +}; + +/** + * Remove an equation. + * + * @method removeEquation + * @param {Equation} eq + */ +Solver.prototype.removeEquation = function(eq){ + var i = this.equations.indexOf(eq); + if(i !== -1){ + this.equations.splice(i,1); + } +}; + +/** + * Remove all currently added equations. + * + * @method removeAllEquations + */ +Solver.prototype.removeAllEquations = function(){ + this.equations.length=0; +}; + +Solver.GS = 1; +Solver.ISLAND = 2; + +},{"../events/EventEmitter":26,"../utils/Utils":57}],48:[function(_dereq_,module,exports){ +var ContactEquation = _dereq_('../equations/ContactEquation'); +var Pool = _dereq_('./Pool'); + +module.exports = ContactEquationPool; + +/** + * @class + */ +function ContactEquationPool() { + Pool.apply(this, arguments); +} +ContactEquationPool.prototype = new Pool(); +ContactEquationPool.prototype.constructor = ContactEquationPool; + +/** + * @method create + * @return {ContactEquation} + */ +ContactEquationPool.prototype.create = function () { + return new ContactEquation(); +}; + +/** + * @method destroy + * @param {ContactEquation} equation + * @return {ContactEquationPool} + */ +ContactEquationPool.prototype.destroy = function (equation) { + equation.bodyA = equation.bodyB = null; + return this; +}; + +},{"../equations/ContactEquation":21,"./Pool":55}],49:[function(_dereq_,module,exports){ +var FrictionEquation = _dereq_('../equations/FrictionEquation'); +var Pool = _dereq_('./Pool'); + +module.exports = FrictionEquationPool; + +/** + * @class + */ +function FrictionEquationPool() { + Pool.apply(this, arguments); +} +FrictionEquationPool.prototype = new Pool(); +FrictionEquationPool.prototype.constructor = FrictionEquationPool; + +/** + * @method create + * @return {FrictionEquation} + */ +FrictionEquationPool.prototype.create = function () { + return new FrictionEquation(); +}; + +/** + * @method destroy + * @param {FrictionEquation} equation + * @return {FrictionEquationPool} + */ +FrictionEquationPool.prototype.destroy = function (equation) { + equation.bodyA = equation.bodyB = null; + return this; +}; + +},{"../equations/FrictionEquation":23,"./Pool":55}],50:[function(_dereq_,module,exports){ +var IslandNode = _dereq_('../world/IslandNode'); +var Pool = _dereq_('./Pool'); + +module.exports = IslandNodePool; + +/** + * @class + */ +function IslandNodePool() { + Pool.apply(this, arguments); +} +IslandNodePool.prototype = new Pool(); +IslandNodePool.prototype.constructor = IslandNodePool; + +/** + * @method create + * @return {IslandNode} + */ +IslandNodePool.prototype.create = function () { + return new IslandNode(); +}; + +/** + * @method destroy + * @param {IslandNode} node + * @return {IslandNodePool} + */ +IslandNodePool.prototype.destroy = function (node) { + node.reset(); + return this; +}; + +},{"../world/IslandNode":60,"./Pool":55}],51:[function(_dereq_,module,exports){ +var Island = _dereq_('../world/Island'); +var Pool = _dereq_('./Pool'); + +module.exports = IslandPool; + +/** + * @class + */ +function IslandPool() { + Pool.apply(this, arguments); +} +IslandPool.prototype = new Pool(); +IslandPool.prototype.constructor = IslandPool; + +/** + * @method create + * @return {Island} + */ +IslandPool.prototype.create = function () { + return new Island(); +}; + +/** + * @method destroy + * @param {Island} island + * @return {IslandPool} + */ +IslandPool.prototype.destroy = function (island) { + island.reset(); + return this; +}; + +},{"../world/Island":58,"./Pool":55}],52:[function(_dereq_,module,exports){ +var TupleDictionary = _dereq_('./TupleDictionary'); +var OverlapKeeperRecord = _dereq_('./OverlapKeeperRecord'); +var OverlapKeeperRecordPool = _dereq_('./OverlapKeeperRecordPool'); +var Utils = _dereq_('./Utils'); + +module.exports = OverlapKeeper; + +/** + * Keeps track of overlaps in the current state and the last step state. + * @class OverlapKeeper + * @constructor + */ +function OverlapKeeper() { + this.overlappingShapesLastState = new TupleDictionary(); + this.overlappingShapesCurrentState = new TupleDictionary(); + this.recordPool = new OverlapKeeperRecordPool({ size: 16 }); + this.tmpDict = new TupleDictionary(); + this.tmpArray1 = []; +} + +/** + * Ticks one step forward in time. This will move the current overlap state to the "old" overlap state, and create a new one as current. + * @method tick + */ +OverlapKeeper.prototype.tick = function() { + var last = this.overlappingShapesLastState; + var current = this.overlappingShapesCurrentState; + + // Save old objects into pool + var l = last.keys.length; + while(l--){ + var key = last.keys[l]; + var lastObject = last.getByKey(key); + var currentObject = current.getByKey(key); + if(lastObject){ + // The record is only used in the "last" dict, and will be removed. We might as well pool it. + this.recordPool.release(lastObject); + } + } + + // Clear last object + last.reset(); + + // Transfer from new object to old + last.copy(current); + + // Clear current object + current.reset(); +}; + +/** + * @method setOverlapping + * @param {Body} bodyA + * @param {Body} shapeA + * @param {Body} bodyB + * @param {Body} shapeB + */ +OverlapKeeper.prototype.setOverlapping = function(bodyA, shapeA, bodyB, shapeB) { + var last = this.overlappingShapesLastState; + var current = this.overlappingShapesCurrentState; + + // Store current contact state + if(!current.get(shapeA.id, shapeB.id)){ + var data = this.recordPool.get(); + data.set(bodyA, shapeA, bodyB, shapeB); + current.set(shapeA.id, shapeB.id, data); + } +}; + +OverlapKeeper.prototype.getNewOverlaps = function(result){ + return this.getDiff(this.overlappingShapesLastState, this.overlappingShapesCurrentState, result); +}; + +OverlapKeeper.prototype.getEndOverlaps = function(result){ + return this.getDiff(this.overlappingShapesCurrentState, this.overlappingShapesLastState, result); +}; + +/** + * Checks if two bodies are currently overlapping. + * @method bodiesAreOverlapping + * @param {Body} bodyA + * @param {Body} bodyB + * @return {boolean} + */ +OverlapKeeper.prototype.bodiesAreOverlapping = function(bodyA, bodyB){ + var current = this.overlappingShapesCurrentState; + var l = current.keys.length; + while(l--){ + var key = current.keys[l]; + var data = current.data[key]; + if((data.bodyA === bodyA && data.bodyB === bodyB) || data.bodyA === bodyB && data.bodyB === bodyA){ + return true; + } + } + return false; +}; + +OverlapKeeper.prototype.getDiff = function(dictA, dictB, result){ + var result = result || []; + var last = dictA; + var current = dictB; + + result.length = 0; + + var l = current.keys.length; + while(l--){ + var key = current.keys[l]; + var data = current.data[key]; + + if(!data){ + throw new Error('Key '+key+' had no data!'); + } + + var lastData = last.data[key]; + if(!lastData){ + // Not overlapping in last state, but in current. + result.push(data); + } + } + + return result; +}; + +OverlapKeeper.prototype.isNewOverlap = function(shapeA, shapeB){ + var idA = shapeA.id|0, + idB = shapeB.id|0; + var last = this.overlappingShapesLastState; + var current = this.overlappingShapesCurrentState; + // Not in last but in new + return !!!last.get(idA, idB) && !!current.get(idA, idB); +}; + +OverlapKeeper.prototype.getNewBodyOverlaps = function(result){ + this.tmpArray1.length = 0; + var overlaps = this.getNewOverlaps(this.tmpArray1); + return this.getBodyDiff(overlaps, result); +}; + +OverlapKeeper.prototype.getEndBodyOverlaps = function(result){ + this.tmpArray1.length = 0; + var overlaps = this.getEndOverlaps(this.tmpArray1); + return this.getBodyDiff(overlaps, result); +}; + +OverlapKeeper.prototype.getBodyDiff = function(overlaps, result){ + result = result || []; + var accumulator = this.tmpDict; + + var l = overlaps.length; + + while(l--){ + var data = overlaps[l]; + + // Since we use body id's for the accumulator, these will be a subset of the original one + accumulator.set(data.bodyA.id|0, data.bodyB.id|0, data); + } + + l = accumulator.keys.length; + while(l--){ + var data = accumulator.getByKey(accumulator.keys[l]); + if(data){ + result.push(data.bodyA, data.bodyB); + } + } + + accumulator.reset(); + + return result; +}; + +},{"./OverlapKeeperRecord":53,"./OverlapKeeperRecordPool":54,"./TupleDictionary":56,"./Utils":57}],53:[function(_dereq_,module,exports){ +module.exports = OverlapKeeperRecord; + +/** + * Overlap data container for the OverlapKeeper + * @class OverlapKeeperRecord + * @constructor + * @param {Body} bodyA + * @param {Shape} shapeA + * @param {Body} bodyB + * @param {Shape} shapeB + */ +function OverlapKeeperRecord(bodyA, shapeA, bodyB, shapeB){ + /** + * @property {Shape} shapeA + */ + this.shapeA = shapeA; + /** + * @property {Shape} shapeB + */ + this.shapeB = shapeB; + /** + * @property {Body} bodyA + */ + this.bodyA = bodyA; + /** + * @property {Body} bodyB + */ + this.bodyB = bodyB; +} + +/** + * Set the data for the record + * @method set + * @param {Body} bodyA + * @param {Shape} shapeA + * @param {Body} bodyB + * @param {Shape} shapeB + */ +OverlapKeeperRecord.prototype.set = function(bodyA, shapeA, bodyB, shapeB){ + OverlapKeeperRecord.call(this, bodyA, shapeA, bodyB, shapeB); +}; + +},{}],54:[function(_dereq_,module,exports){ +var OverlapKeeperRecord = _dereq_('./OverlapKeeperRecord'); +var Pool = _dereq_('./Pool'); + +module.exports = OverlapKeeperRecordPool; + +/** + * @class + */ +function OverlapKeeperRecordPool() { + Pool.apply(this, arguments); +} +OverlapKeeperRecordPool.prototype = new Pool(); +OverlapKeeperRecordPool.prototype.constructor = OverlapKeeperRecordPool; + +/** + * @method create + * @return {OverlapKeeperRecord} + */ +OverlapKeeperRecordPool.prototype.create = function () { + return new OverlapKeeperRecord(); +}; + +/** + * @method destroy + * @param {OverlapKeeperRecord} record + * @return {OverlapKeeperRecordPool} + */ +OverlapKeeperRecordPool.prototype.destroy = function (record) { + record.bodyA = record.bodyB = record.shapeA = record.shapeB = null; + return this; +}; + +},{"./OverlapKeeperRecord":53,"./Pool":55}],55:[function(_dereq_,module,exports){ +module.exports = Pool; + +/** + * @class Object pooling utility. + */ +function Pool(options) { + options = options || {}; + + /** + * @property {Array} objects + * @type {Array} + */ + this.objects = []; + + if(options.size !== undefined){ + this.resize(options.size); + } +} + +/** + * @method resize + * @param {number} size + * @return {Pool} Self, for chaining + */ +Pool.prototype.resize = function (size) { + var objects = this.objects; + + while (objects.length > size) { + objects.pop(); + } + + while (objects.length < size) { + objects.push(this.create()); + } + + return this; +}; + +/** + * Get an object from the pool or create a new instance. + * @method get + * @return {Object} + */ +Pool.prototype.get = function () { + var objects = this.objects; + return objects.length ? objects.pop() : this.create(); +}; + +/** + * Clean up and put the object back into the pool for later use. + * @method release + * @param {Object} object + * @return {Pool} Self for chaining + */ +Pool.prototype.release = function (object) { + this.destroy(object); + this.objects.push(object); + return this; +}; + +},{}],56:[function(_dereq_,module,exports){ +var Utils = _dereq_('./Utils'); + +module.exports = TupleDictionary; + +/** + * @class TupleDictionary + * @constructor + */ +function TupleDictionary() { + + /** + * The data storage + * @property data + * @type {Object} + */ + this.data = {}; + + /** + * Keys that are currently used. + * @property {Array} keys + */ + this.keys = []; +} + +/** + * Generate a key given two integers + * @method getKey + * @param {number} i + * @param {number} j + * @return {string} + */ +TupleDictionary.prototype.getKey = function(id1, id2) { + id1 = id1|0; + id2 = id2|0; + + if ( (id1|0) === (id2|0) ){ + return -1; + } + + // valid for values < 2^16 + return ((id1|0) > (id2|0) ? + (id1 << 16) | (id2 & 0xFFFF) : + (id2 << 16) | (id1 & 0xFFFF))|0 + ; +}; + +/** + * @method getByKey + * @param {Number} key + * @return {Object} + */ +TupleDictionary.prototype.getByKey = function(key) { + key = key|0; + return this.data[key]; +}; + +/** + * @method get + * @param {Number} i + * @param {Number} j + * @return {Number} + */ +TupleDictionary.prototype.get = function(i, j) { + return this.data[this.getKey(i, j)]; +}; + +/** + * Set a value. + * @method set + * @param {Number} i + * @param {Number} j + * @param {Number} value + */ +TupleDictionary.prototype.set = function(i, j, value) { + if(!value){ + throw new Error("No data!"); + } + + var key = this.getKey(i, j); + + // Check if key already exists + if(!this.data[key]){ + this.keys.push(key); + } + + this.data[key] = value; + + return key; +}; + +/** + * Remove all data. + * @method reset + */ +TupleDictionary.prototype.reset = function() { + var data = this.data, + keys = this.keys; + + var l = keys.length; + while(l--) { + delete data[keys[l]]; + } + + keys.length = 0; +}; + +/** + * Copy another TupleDictionary. Note that all data in this dictionary will be removed. + * @method copy + * @param {TupleDictionary} dict The TupleDictionary to copy into this one. + */ +TupleDictionary.prototype.copy = function(dict) { + this.reset(); + Utils.appendArray(this.keys, dict.keys); + var l = dict.keys.length; + while(l--){ + var key = dict.keys[l]; + this.data[key] = dict.data[key]; + } +}; + +},{"./Utils":57}],57:[function(_dereq_,module,exports){ +/* global P2_ARRAY_TYPE */ + +module.exports = Utils; + +/** + * Misc utility functions + * @class Utils + * @constructor + */ +function Utils(){} + +/** + * Append the values in array b to the array a. See this for an explanation. + * @method appendArray + * @static + * @param {Array} a + * @param {Array} b + */ +Utils.appendArray = function(a,b){ + if (b.length < 150000) { + a.push.apply(a, b); + } else { + for (var i = 0, len = b.length; i !== len; ++i) { + a.push(b[i]); + } + } +}; + +/** + * Garbage free Array.splice(). Does not allocate a new array. + * @method splice + * @static + * @param {Array} array + * @param {Number} index + * @param {Number} howmany + */ +Utils.splice = function(array,index,howmany){ + howmany = howmany || 1; + for (var i=index, len=array.length-howmany; i < len; i++){ + array[i] = array[i + howmany]; + } + array.length = len; +}; + +/** + * The array type to use for internal numeric computations throughout the library. Float32Array is used if it is available, but falls back on Array. If you want to set array type manually, inject it via the global variable P2_ARRAY_TYPE. See example below. + * @static + * @property {function} ARRAY_TYPE + * @example + * + * + */ +if(typeof P2_ARRAY_TYPE !== 'undefined') { + Utils.ARRAY_TYPE = P2_ARRAY_TYPE; +} else if (typeof Float32Array !== 'undefined'){ + Utils.ARRAY_TYPE = Float32Array; +} else { + Utils.ARRAY_TYPE = Array; +} + +/** + * Extend an object with the properties of another + * @static + * @method extend + * @param {object} a + * @param {object} b + */ +Utils.extend = function(a,b){ + for(var key in b){ + a[key] = b[key]; + } +}; + +/** + * Extend an options object with default values. + * @static + * @method defaults + * @param {object} options The options object. May be falsy: in this case, a new object is created and returned. + * @param {object} defaults An object containing default values. + * @return {object} The modified options object. + */ +Utils.defaults = function(options, defaults){ + options = options || {}; + for(var key in defaults){ + if(!(key in options)){ + options[key] = defaults[key]; + } + } + return options; +}; + +},{}],58:[function(_dereq_,module,exports){ +var Body = _dereq_('../objects/Body'); + +module.exports = Island; + +/** + * An island of bodies connected with equations. + * @class Island + * @constructor + */ +function Island(){ + + /** + * Current equations in this island. + * @property equations + * @type {Array} + */ + this.equations = []; + + /** + * Current bodies in this island. + * @property bodies + * @type {Array} + */ + this.bodies = []; +} + +/** + * Clean this island from bodies and equations. + * @method reset + */ +Island.prototype.reset = function(){ + this.equations.length = this.bodies.length = 0; +}; + +var bodyIds = []; + +/** + * Get all unique bodies in this island. + * @method getBodies + * @return {Array} An array of Body + */ +Island.prototype.getBodies = function(result){ + var bodies = result || [], + eqs = this.equations; + bodyIds.length = 0; + for(var i=0; i!==eqs.length; i++){ + var eq = eqs[i]; + if(bodyIds.indexOf(eq.bodyA.id)===-1){ + bodies.push(eq.bodyA); + bodyIds.push(eq.bodyA.id); + } + if(bodyIds.indexOf(eq.bodyB.id)===-1){ + bodies.push(eq.bodyB); + bodyIds.push(eq.bodyB.id); + } + } + return bodies; +}; + +/** + * Check if the entire island wants to sleep. + * @method wantsToSleep + * @return {Boolean} + */ +Island.prototype.wantsToSleep = function(){ + for(var i=0; i= dt && substeps < maxSubSteps) { + // Do fixed steps to catch up + this.internalStep(dt); + this.time += dt; + this.accumulator -= dt; + substeps++; + } + + var t = (this.accumulator % dt) / dt; + for(var j=0; j!==this.bodies.length; j++){ + var b = this.bodies[j]; + vec2.lerp(b.interpolatedPosition, b.previousPosition, b.position, t); + b.interpolatedAngle = b.previousAngle + t * (b.angle - b.previousAngle); + } + } +}; + +var endOverlaps = []; + +/** + * Make a fixed step. + * @method internalStep + * @param {number} dt + * @private + */ +World.prototype.internalStep = function(dt){ + this.stepping = true; + + var that = this, + Nsprings = this.springs.length, + springs = this.springs, + bodies = this.bodies, + g = this.gravity, + solver = this.solver, + Nbodies = this.bodies.length, + broadphase = this.broadphase, + np = this.narrowphase, + constraints = this.constraints, + t0, t1, + fhMinv = step_fhMinv, + velodt = step_velodt, + mg = step_mg, + scale = vec2.scale, + add = vec2.add, + rotate = vec2.rotate, + islandManager = this.islandManager; + + this.overlapKeeper.tick(); + + this.lastTimeStep = dt; + + // Update approximate friction gravity. + if(this.useWorldGravityAsFrictionGravity){ + var gravityLen = vec2.length(this.gravity); + if(!(gravityLen === 0 && this.useFrictionGravityOnZeroGravity)){ + // Nonzero gravity. Use it. + this.frictionGravity = gravityLen; + } + } + + // Add gravity to bodies + if(this.applyGravity){ + for(var i=0; i!==Nbodies; i++){ + var b = bodies[i], + fi = b.force; + if(b.type !== Body.DYNAMIC || b.sleepState === Body.SLEEPING){ + continue; + } + vec2.scale(mg,g,b.mass*b.gravityScale); // F=m*g + add(fi,fi,mg); + } + } + + // Add spring forces + if(this.applySpringForces){ + for(var i=0; i!==Nsprings; i++){ + var s = springs[i]; + s.applyForce(); + } + } + + if(this.applyDamping){ + for(var i=0; i!==Nbodies; i++){ + var b = bodies[i]; + if(b.type === Body.DYNAMIC){ + b.applyDamping(dt); + } + } + } + + // Broadphase + var result = broadphase.getCollisionPairs(this); + + // Remove ignored collision pairs + var ignoredPairs = this.disabledBodyCollisionPairs; + for(var i=ignoredPairs.length-2; i>=0; i-=2){ + for(var j=result.length-2; j>=0; j-=2){ + if( (ignoredPairs[i] === result[j] && ignoredPairs[i+1] === result[j+1]) || + (ignoredPairs[i+1] === result[j] && ignoredPairs[i] === result[j+1])){ + result.splice(j,2); + } + } + } + + // Remove constrained pairs with collideConnected == false + var Nconstraints = constraints.length; + for(i=0; i!==Nconstraints; i++){ + var c = constraints[i]; + if(!c.collideConnected){ + for(var j=result.length-2; j>=0; j-=2){ + if( (c.bodyA === result[j] && c.bodyB === result[j+1]) || + (c.bodyB === result[j] && c.bodyA === result[j+1])){ + result.splice(j,2); + } + } + } + } + + // postBroadphase event + this.postBroadphaseEvent.pairs = result; + this.emit(this.postBroadphaseEvent); + this.postBroadphaseEvent.pairs = null; + + // Narrowphase + np.reset(this); + for(var i=0, Nresults=result.length; i!==Nresults; i+=2){ + var bi = result[i], + bj = result[i+1]; + + // Loop over all shapes of body i + for(var k=0, Nshapesi=bi.shapes.length; k!==Nshapesi; k++){ + var si = bi.shapes[k], + xi = si.position, + ai = si.angle; + + // All shapes of body j + for(var l=0, Nshapesj=bj.shapes.length; l!==Nshapesj; l++){ + var sj = bj.shapes[l], + xj = sj.position, + aj = sj.angle; + + var cm = this.defaultContactMaterial; + if(si.material && sj.material){ + var tmp = this.getContactMaterial(si.material,sj.material); + if(tmp){ + cm = tmp; + } + } + + this.runNarrowphase(np,bi,si,xi,ai,bj,sj,xj,aj,cm,this.frictionGravity); + } + } + } + + // Wake up bodies + for(var i=0; i!==Nbodies; i++){ + var body = bodies[i]; + if(body._wakeUpAfterNarrowphase){ + body.wakeUp(); + body._wakeUpAfterNarrowphase = false; + } + } + + // Emit end overlap events + if(this.has('endContact')){ + this.overlapKeeper.getEndOverlaps(endOverlaps); + var e = this.endContactEvent; + var l = endOverlaps.length; + while(l--){ + var data = endOverlaps[l]; + e.shapeA = data.shapeA; + e.shapeB = data.shapeB; + e.bodyA = data.bodyA; + e.bodyB = data.bodyB; + this.emit(e); + } + endOverlaps.length = 0; + } + + var preSolveEvent = this.preSolveEvent; + preSolveEvent.contactEquations = np.contactEquations; + preSolveEvent.frictionEquations = np.frictionEquations; + this.emit(preSolveEvent); + preSolveEvent.contactEquations = preSolveEvent.frictionEquations = null; + + // update constraint equations + var Nconstraints = constraints.length; + for(i=0; i!==Nconstraints; i++){ + constraints[i].update(); + } + + if(np.contactEquations.length || np.frictionEquations.length || Nconstraints){ + if(this.islandSplit){ + // Split into islands + islandManager.equations.length = 0; + Utils.appendArray(islandManager.equations, np.contactEquations); + Utils.appendArray(islandManager.equations, np.frictionEquations); + for(i=0; i!==Nconstraints; i++){ + Utils.appendArray(islandManager.equations, constraints[i].equations); + } + islandManager.split(this); + + for(var i=0; i!==islandManager.islands.length; i++){ + var island = islandManager.islands[i]; + if(island.equations.length){ + solver.solveIsland(dt,island); + } + } + + } else { + + // Add contact equations to solver + solver.addEquations(np.contactEquations); + solver.addEquations(np.frictionEquations); + + // Add user-defined constraint equations + for(i=0; i!==Nconstraints; i++){ + solver.addEquations(constraints[i].equations); + } + + if(this.solveConstraints){ + solver.solve(dt,this); + } + + solver.removeAllEquations(); + } + } + + // Step forward + for(var i=0; i!==Nbodies; i++){ + var body = bodies[i]; + + // if(body.sleepState !== Body.SLEEPING && body.type !== Body.STATIC){ + body.integrate(dt); + // } + } + + // Reset force + for(var i=0; i!==Nbodies; i++){ + bodies[i].setZeroForce(); + } + + // Emit impact event + if(this.emitImpactEvent && this.has('impact')){ + var ev = this.impactEvent; + for(var i=0; i!==np.contactEquations.length; i++){ + var eq = np.contactEquations[i]; + if(eq.firstImpact){ + ev.bodyA = eq.bodyA; + ev.bodyB = eq.bodyB; + ev.shapeA = eq.shapeA; + ev.shapeB = eq.shapeB; + ev.contactEquation = eq; + this.emit(ev); + } + } + } + + // Sleeping update + if(this.sleepMode === World.BODY_SLEEPING){ + for(i=0; i!==Nbodies; i++){ + bodies[i].sleepTick(this.time, false, dt); + } + } else if(this.sleepMode === World.ISLAND_SLEEPING && this.islandSplit){ + + // Tell all bodies to sleep tick but dont sleep yet + for(i=0; i!==Nbodies; i++){ + bodies[i].sleepTick(this.time, true, dt); + } + + // Sleep islands + for(var i=0; i 0; + np.frictionCoefficient = cm.friction; + var reducedMass; + if(bi.type === Body.STATIC || bi.type === Body.KINEMATIC){ + reducedMass = bj.mass; + } else if(bj.type === Body.STATIC || bj.type === Body.KINEMATIC){ + reducedMass = bi.mass; + } else { + reducedMass = (bi.mass*bj.mass)/(bi.mass+bj.mass); + } + np.slipForce = cm.friction*glen*reducedMass; + np.restitution = cm.restitution; + np.surfaceVelocity = cm.surfaceVelocity; + np.frictionStiffness = cm.frictionStiffness; + np.frictionRelaxation = cm.frictionRelaxation; + np.stiffness = cm.stiffness; + np.relaxation = cm.relaxation; + np.contactSkinSize = cm.contactSkinSize; + np.enabledEquations = bi.collisionResponse && bj.collisionResponse && si.collisionResponse && sj.collisionResponse; + + var resolver = np[si.type | sj.type], + numContacts = 0; + if (resolver) { + var sensor = si.sensor || sj.sensor; + var numFrictionBefore = np.frictionEquations.length; + if (si.type < sj.type) { + numContacts = resolver.call(np, bi,si,xiw,aiw, bj,sj,xjw,ajw, sensor); + } else { + numContacts = resolver.call(np, bj,sj,xjw,ajw, bi,si,xiw,aiw, sensor); + } + var numFrictionEquations = np.frictionEquations.length - numFrictionBefore; + + if(numContacts){ + + if( bi.allowSleep && + bi.type === Body.DYNAMIC && + bi.sleepState === Body.SLEEPING && + bj.sleepState === Body.AWAKE && + bj.type !== Body.STATIC + ){ + var speedSquaredB = vec2.squaredLength(bj.velocity) + Math.pow(bj.angularVelocity,2); + var speedLimitSquaredB = Math.pow(bj.sleepSpeedLimit,2); + if(speedSquaredB >= speedLimitSquaredB*2){ + bi._wakeUpAfterNarrowphase = true; + } + } + + if( bj.allowSleep && + bj.type === Body.DYNAMIC && + bj.sleepState === Body.SLEEPING && + bi.sleepState === Body.AWAKE && + bi.type !== Body.STATIC + ){ + var speedSquaredA = vec2.squaredLength(bi.velocity) + Math.pow(bi.angularVelocity,2); + var speedLimitSquaredA = Math.pow(bi.sleepSpeedLimit,2); + if(speedSquaredA >= speedLimitSquaredA*2){ + bj._wakeUpAfterNarrowphase = true; + } + } + + this.overlapKeeper.setOverlapping(bi, si, bj, sj); + if(this.has('beginContact') && this.overlapKeeper.isNewOverlap(si, sj)){ + + // Report new shape overlap + var e = this.beginContactEvent; + e.shapeA = si; + e.shapeB = sj; + e.bodyA = bi; + e.bodyB = bj; + + // Reset contact equations + e.contactEquations.length = 0; + + if(typeof(numContacts)==="number"){ + for(var i=np.contactEquations.length-numContacts; i 1){ // Why divide by 1? + for(var i=np.frictionEquations.length-numFrictionEquations; i=0; i--){ + this.removeConstraint(cs[i]); + } + + // Remove all bodies + var bodies = this.bodies; + for(var i=bodies.length-1; i>=0; i--){ + this.removeBody(bodies[i]); + } + + // Remove all springs + var springs = this.springs; + for(var i=springs.length-1; i>=0; i--){ + this.removeSpring(springs[i]); + } + + // Remove all contact materials + var cms = this.contactMaterials; + for(var i=cms.length-1; i>=0; i--){ + this.removeContactMaterial(cms[i]); + } + + World.apply(this); +}; + +var hitTest_tmp1 = vec2.create(), + hitTest_zero = vec2.fromValues(0,0), + hitTest_tmp2 = vec2.fromValues(0,0); + +/** + * Test if a world point overlaps bodies + * @method hitTest + * @param {Array} worldPoint Point to use for intersection tests + * @param {Array} bodies A list of objects to check for intersection + * @param {Number} precision Used for matching against particles and lines. Adds some margin to these infinitesimal objects. + * @return {Array} Array of bodies that overlap the point + * @todo Should use an api similar to the raycast function + * @todo Should probably implement a .containsPoint method for all shapes. Would be more efficient + */ +World.prototype.hitTest = function(worldPoint,bodies,precision){ + precision = precision || 0; + + // Create a dummy particle body with a particle shape to test against the bodies + var pb = new Body({ position:worldPoint }), + ps = new Particle(), + px = worldPoint, + pa = 0, + x = hitTest_tmp1, + zero = hitTest_zero, + tmp = hitTest_tmp2; + pb.addShape(ps); + + var n = this.narrowphase, + result = []; + + // Check bodies + for(var i=0, N=bodies.length; i!==N; i++){ + var b = bodies[i]; + + for(var j=0, NS=b.shapes.length; j!==NS; j++){ + var s = b.shapes[j]; + + // Get shape world position + angle + vec2.rotate(x, s.position, b.angle); + vec2.add(x, x, b.position); + var a = s.angle + b.angle; + + if( (s instanceof Circle && n.circleParticle (b,s,x,a, pb,ps,px,pa, true)) || + (s instanceof Convex && n.particleConvex (pb,ps,px,pa, b,s,x,a, true)) || + (s instanceof Plane && n.particlePlane (pb,ps,px,pa, b,s,x,a, true)) || + (s instanceof Capsule && n.particleCapsule (pb,ps,px,pa, b,s,x,a, true)) || + (s instanceof Particle && vec2.squaredLength(vec2.sub(tmp,x,worldPoint)) < precision*precision) + ){ + result.push(b); + } + } + } + + return result; +}; + +/** + * Set the stiffness for all equations and contact materials. + * @method setGlobalStiffness + * @param {Number} stiffness + */ +World.prototype.setGlobalStiffness = function(stiffness){ + + // Set for all constraints + var constraints = this.constraints; + for(var i=0; i !== constraints.length; i++){ + var c = constraints[i]; + for(var j=0; j !== c.equations.length; j++){ + var eq = c.equations[j]; + eq.stiffness = stiffness; + eq.needsUpdate = true; + } + } + + // Set for all contact materials + var contactMaterials = this.contactMaterials; + for(var i=0; i !== contactMaterials.length; i++){ + var c = contactMaterials[i]; + c.stiffness = c.frictionStiffness = stiffness; + } + + // Set for default contact material + var c = this.defaultContactMaterial; + c.stiffness = c.frictionStiffness = stiffness; +}; + +/** + * Set the relaxation for all equations and contact materials. + * @method setGlobalRelaxation + * @param {Number} relaxation + */ +World.prototype.setGlobalRelaxation = function(relaxation){ + + // Set for all constraints + for(var i=0; i !== this.constraints.length; i++){ + var c = this.constraints[i]; + for(var j=0; j !== c.equations.length; j++){ + var eq = c.equations[j]; + eq.relaxation = relaxation; + eq.needsUpdate = true; + } + } + + // Set for all contact materials + for(var i=0; i !== this.contactMaterials.length; i++){ + var c = this.contactMaterials[i]; + c.relaxation = c.frictionRelaxation = relaxation; + } + + // Set for default contact material + var c = this.defaultContactMaterial; + c.relaxation = c.frictionRelaxation = relaxation; +}; + +var tmpAABB = new AABB(); +var tmpArray = []; + +/** + * Ray cast against all bodies in the world. + * @method raycast + * @param {RaycastResult} result + * @param {Ray} ray + * @return {boolean} True if any body was hit. + * + * @example + * var ray = new Ray({ + * mode: Ray.CLOSEST, // or ANY + * from: [0, 0], + * to: [10, 0], + * }); + * var result = new RaycastResult(); + * world.raycast(result, ray); + * + * // Get the hit point + * var hitPoint = vec2.create(); + * result.getHitPoint(hitPoint, ray); + * console.log('Hit point: ', hitPoint[0], hitPoint[1], ' at distance ' + result.getHitDistance(ray)); + * + * @example + * var ray = new Ray({ + * mode: Ray.ALL, + * from: [0, 0], + * to: [10, 0], + * callback: function(result){ + * + * // Print some info about the hit + * console.log('Hit body and shape: ', result.body, result.shape); + * + * // Get the hit point + * var hitPoint = vec2.create(); + * result.getHitPoint(hitPoint, ray); + * console.log('Hit point: ', hitPoint[0], hitPoint[1], ' at distance ' + result.getHitDistance(ray)); + * + * // If you are happy with the hits you got this far, you can stop the traversal here: + * result.stop(); + * } + * }); + * var result = new RaycastResult(); + * world.raycast(result, ray); + */ +World.prototype.raycast = function(result, ray){ + + // Get all bodies within the ray AABB + ray.getAABB(tmpAABB); + this.broadphase.aabbQuery(this, tmpAABB, tmpArray); + ray.intersectBodies(result, tmpArray); + tmpArray.length = 0; + + return result.hasHit(); +}; + +},{"../../package.json":6,"../collision/AABB":7,"../collision/Broadphase":8,"../collision/Narrowphase":10,"../collision/Ray":11,"../collision/SAPBroadphase":13,"../constraints/Constraint":14,"../constraints/DistanceConstraint":15,"../constraints/GearConstraint":16,"../constraints/LockConstraint":17,"../constraints/PrismaticConstraint":18,"../constraints/RevoluteConstraint":19,"../events/EventEmitter":26,"../material/ContactMaterial":27,"../material/Material":28,"../math/vec2":30,"../objects/Body":31,"../objects/LinearSpring":32,"../objects/RotationalSpring":33,"../shapes/Capsule":38,"../shapes/Circle":39,"../shapes/Convex":40,"../shapes/Line":42,"../shapes/Particle":43,"../shapes/Plane":44,"../shapes/Shape":45,"../solver/GSSolver":46,"../solver/Solver":47,"../utils/OverlapKeeper":52,"../utils/Utils":57,"./IslandManager":59}]},{},[36]) +(36) +}); \ No newline at end of file diff --git a/build/p2.map b/build/p2.map new file mode 100644 index 000000000..703f1d345 --- /dev/null +++ b/build/p2.map @@ -0,0 +1 @@ +{"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 new file mode 100644 index 000000000..9a2a670ff --- /dev/null +++ b/build/p2.min.js @@ -0,0 +1,7 @@ +/* Phaser v2.6.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)},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) { - //TODO: evaluate use of glm_invsqrt here? - len = 1 / Math.sqrt(len); - out[0] = a[0] * len; - out[1] = a[1] * len; - } - return out; -}; - -/** - * Calculates the dot product of two vec2's - * - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {Number} dot product of a and b - */ -vec2.dot = function (a, b) { - return a[0] * b[0] + a[1] * b[1]; -}; - -/** - * Computes the cross product of two vec2's - * Note that the cross product must by definition produce a 3D vector - * - * @param {vec3} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @returns {vec3} out - */ -vec2.cross = function(out, a, b) { - var z = a[0] * b[1] - a[1] * b[0]; - out[0] = out[1] = 0; - out[2] = z; - return out; -}; - -/** - * Performs a linear interpolation between two vec2's - * - * @param {vec2} out the receiving vector - * @param {vec2} a the first operand - * @param {vec2} b the second operand - * @param {Number} t interpolation amount between the two inputs - * @returns {vec2} out - */ -vec2.lerp = function (out, a, b, t) { - var ax = a[0], - ay = a[1]; - out[0] = ax + t * (b[0] - ax); - out[1] = ay + t * (b[1] - ay); - return out; -}; - -/** - * Generates a random vector with the given scale - * - * @param {vec2} out the receiving vector - * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned - * @returns {vec2} out - */ -vec2.random = function (out, scale) { - scale = scale || 1.0; - var r = GLMAT_RANDOM() * 2.0 * Math.PI; - out[0] = Math.cos(r) * scale; - out[1] = Math.sin(r) * scale; - return out; -}; - -/** - * Transforms the vec2 with a mat2 - * - * @param {vec2} out the receiving vector - * @param {vec2} a the vector to transform - * @param {mat2} m matrix to transform with - * @returns {vec2} out - */ -vec2.transformMat2 = function(out, a, m) { - var x = a[0], - y = a[1]; - out[0] = m[0] * x + m[2] * y; - out[1] = m[1] * x + m[3] * y; - return out; -}; - -/** - * Transforms the vec2 with a mat2d - * - * @param {vec2} out the receiving vector - * @param {vec2} a the vector to transform - * @param {mat2d} m matrix to transform with - * @returns {vec2} out - */ -vec2.transformMat2d = function(out, a, m) { - var x = a[0], - y = a[1]; - out[0] = m[0] * x + m[2] * y + m[4]; - out[1] = m[1] * x + m[3] * y + m[5]; - return out; -}; - -/** - * Transforms the vec2 with a mat3 - * 3rd vector component is implicitly '1' - * - * @param {vec2} out the receiving vector - * @param {vec2} a the vector to transform - * @param {mat3} m matrix to transform with - * @returns {vec2} out - */ -vec2.transformMat3 = function(out, a, m) { - var x = a[0], - y = a[1]; - out[0] = m[0] * x + m[3] * y + m[6]; - out[1] = m[1] * x + m[4] * y + m[7]; - return out; -}; - -/** - * Transforms the vec2 with a mat4 - * 3rd vector component is implicitly '0' - * 4th vector component is implicitly '1' - * - * @param {vec2} out the receiving vector - * @param {vec2} a the vector to transform - * @param {mat4} m matrix to transform with - * @returns {vec2} out - */ -vec2.transformMat4 = function(out, a, m) { - var x = a[0], - y = a[1]; - out[0] = m[0] * x + m[4] * y + m[12]; - out[1] = m[1] * x + m[5] * y + m[13]; - return out; -}; - -/** - * Perform some operation over an array of vec2s. - * - * @param {Array} a the array of vectors to iterate over - * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed - * @param {Number} offset Number of elements to skip at the beginning of the array - * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array - * @param {Function} fn Function to call for each vector in the array - * @param {Object} [arg] additional argument to pass to fn - * @returns {Array} a - * @function - */ -vec2.forEach = (function() { - var vec = vec2.create(); - - return function(a, stride, offset, count, fn, arg) { - var i, l; - if(!stride) { - stride = 2; - } - - if(!offset) { - offset = 0; - } - - if(count) { - l = Math.min((count * stride) + offset, a.length); - } else { - l = a.length; - } - - for(i = offset; i < l; i += stride) { - vec[0] = a[i]; vec[1] = a[i+1]; - fn(vec, vec, arg); - a[i] = vec[0]; a[i+1] = vec[1]; - } - - return a; - }; -})(); - -/** - * Returns a string representation of a vector - * - * @param {vec2} vec vector to represent as a string - * @returns {String} string representation of the vector - */ -vec2.str = function (a) { - return 'vec2(' + a[0] + ', ' + a[1] + ')'; -}; - -if(typeof(exports) !== 'undefined') { - exports.vec2 = vec2; -} -; -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * @class 3 Dimensional Vector - * @name vec3 - */ - -var vec3 = {}; - -/** - * Creates a new, empty vec3 - * - * @returns {vec3} a new 3D vector - */ -vec3.create = function() { - var out = new GLMAT_ARRAY_TYPE(3); - out[0] = 0; - out[1] = 0; - out[2] = 0; - return out; -}; - -/** - * Creates a new vec3 initialized with values from an existing vector - * - * @param {vec3} a vector to clone - * @returns {vec3} a new 3D vector - */ -vec3.clone = function(a) { - var out = new GLMAT_ARRAY_TYPE(3); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - return out; -}; - -/** - * Creates a new vec3 initialized with the given values - * - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @returns {vec3} a new 3D vector - */ -vec3.fromValues = function(x, y, z) { - var out = new GLMAT_ARRAY_TYPE(3); - out[0] = x; - out[1] = y; - out[2] = z; - return out; -}; - -/** - * Copy the values from one vec3 to another - * - * @param {vec3} out the receiving vector - * @param {vec3} a the source vector - * @returns {vec3} out - */ -vec3.copy = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - return out; -}; - -/** - * Set the components of a vec3 to the given values - * - * @param {vec3} out the receiving vector - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @returns {vec3} out - */ -vec3.set = function(out, x, y, z) { - out[0] = x; - out[1] = y; - out[2] = z; - return out; -}; - -/** - * Adds two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -vec3.add = function(out, a, b) { - out[0] = a[0] + b[0]; - out[1] = a[1] + b[1]; - out[2] = a[2] + b[2]; - return out; -}; - -/** - * Subtracts vector b from vector a - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -vec3.subtract = function(out, a, b) { - out[0] = a[0] - b[0]; - out[1] = a[1] - b[1]; - out[2] = a[2] - b[2]; - return out; -}; - -/** - * Alias for {@link vec3.subtract} - * @function - */ -vec3.sub = vec3.subtract; - -/** - * Multiplies two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -vec3.multiply = function(out, a, b) { - out[0] = a[0] * b[0]; - out[1] = a[1] * b[1]; - out[2] = a[2] * b[2]; - return out; -}; - -/** - * Alias for {@link vec3.multiply} - * @function - */ -vec3.mul = vec3.multiply; - -/** - * Divides two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -vec3.divide = function(out, a, b) { - out[0] = a[0] / b[0]; - out[1] = a[1] / b[1]; - out[2] = a[2] / b[2]; - return out; -}; - -/** - * Alias for {@link vec3.divide} - * @function - */ -vec3.div = vec3.divide; - -/** - * Returns the minimum of two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -vec3.min = function(out, a, b) { - out[0] = Math.min(a[0], b[0]); - out[1] = Math.min(a[1], b[1]); - out[2] = Math.min(a[2], b[2]); - return out; -}; - -/** - * Returns the maximum of two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -vec3.max = function(out, a, b) { - out[0] = Math.max(a[0], b[0]); - out[1] = Math.max(a[1], b[1]); - out[2] = Math.max(a[2], b[2]); - return out; -}; - -/** - * Scales a vec3 by a scalar number - * - * @param {vec3} out the receiving vector - * @param {vec3} a the vector to scale - * @param {Number} b amount to scale the vector by - * @returns {vec3} out - */ -vec3.scale = function(out, a, b) { - out[0] = a[0] * b; - out[1] = a[1] * b; - out[2] = a[2] * b; - return out; -}; - -/** - * Adds two vec3's after scaling the second operand by a scalar value - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @param {Number} scale the amount to scale b by before adding - * @returns {vec3} out - */ -vec3.scaleAndAdd = function(out, a, b, scale) { - out[0] = a[0] + (b[0] * scale); - out[1] = a[1] + (b[1] * scale); - out[2] = a[2] + (b[2] * scale); - return out; -}; - -/** - * Calculates the euclidian distance between two vec3's - * - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {Number} distance between a and b - */ -vec3.distance = function(a, b) { - var x = b[0] - a[0], - y = b[1] - a[1], - z = b[2] - a[2]; - return Math.sqrt(x*x + y*y + z*z); -}; - -/** - * Alias for {@link vec3.distance} - * @function - */ -vec3.dist = vec3.distance; - -/** - * Calculates the squared euclidian distance between two vec3's - * - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {Number} squared distance between a and b - */ -vec3.squaredDistance = function(a, b) { - var x = b[0] - a[0], - y = b[1] - a[1], - z = b[2] - a[2]; - return x*x + y*y + z*z; -}; - -/** - * Alias for {@link vec3.squaredDistance} - * @function - */ -vec3.sqrDist = vec3.squaredDistance; - -/** - * Calculates the length of a vec3 - * - * @param {vec3} a vector to calculate length of - * @returns {Number} length of a - */ -vec3.length = function (a) { - var x = a[0], - y = a[1], - z = a[2]; - return Math.sqrt(x*x + y*y + z*z); -}; - -/** - * Alias for {@link vec3.length} - * @function - */ -vec3.len = vec3.length; - -/** - * Calculates the squared length of a vec3 - * - * @param {vec3} a vector to calculate squared length of - * @returns {Number} squared length of a - */ -vec3.squaredLength = function (a) { - var x = a[0], - y = a[1], - z = a[2]; - return x*x + y*y + z*z; -}; - -/** - * Alias for {@link vec3.squaredLength} - * @function - */ -vec3.sqrLen = vec3.squaredLength; - -/** - * Negates the components of a vec3 - * - * @param {vec3} out the receiving vector - * @param {vec3} a vector to negate - * @returns {vec3} out - */ -vec3.negate = function(out, a) { - out[0] = -a[0]; - out[1] = -a[1]; - out[2] = -a[2]; - return out; -}; - -/** - * Returns the inverse of the components of a vec3 - * - * @param {vec3} out the receiving vector - * @param {vec3} a vector to invert - * @returns {vec3} out - */ -vec3.inverse = function(out, a) { - out[0] = 1.0 / a[0]; - out[1] = 1.0 / a[1]; - out[2] = 1.0 / a[2]; - return out; -}; - -/** - * Normalize a vec3 - * - * @param {vec3} out the receiving vector - * @param {vec3} a vector to normalize - * @returns {vec3} out - */ -vec3.normalize = function(out, a) { - var x = a[0], - y = a[1], - z = a[2]; - var len = x*x + y*y + z*z; - if (len > 0) { - //TODO: evaluate use of glm_invsqrt here? - len = 1 / Math.sqrt(len); - out[0] = a[0] * len; - out[1] = a[1] * len; - out[2] = a[2] * len; - } - return out; -}; - -/** - * Calculates the dot product of two vec3's - * - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {Number} dot product of a and b - */ -vec3.dot = function (a, b) { - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; -}; - -/** - * Computes the cross product of two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @returns {vec3} out - */ -vec3.cross = function(out, a, b) { - var ax = a[0], ay = a[1], az = a[2], - bx = b[0], by = b[1], bz = b[2]; - - out[0] = ay * bz - az * by; - out[1] = az * bx - ax * bz; - out[2] = ax * by - ay * bx; - return out; -}; - -/** - * Performs a linear interpolation between two vec3's - * - * @param {vec3} out the receiving vector - * @param {vec3} a the first operand - * @param {vec3} b the second operand - * @param {Number} t interpolation amount between the two inputs - * @returns {vec3} out - */ -vec3.lerp = function (out, a, b, t) { - var ax = a[0], - ay = a[1], - az = a[2]; - out[0] = ax + t * (b[0] - ax); - out[1] = ay + t * (b[1] - ay); - out[2] = az + t * (b[2] - az); - return out; -}; - -/** - * Generates a random vector with the given scale - * - * @param {vec3} out the receiving vector - * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned - * @returns {vec3} out - */ -vec3.random = function (out, scale) { - scale = scale || 1.0; - - var r = GLMAT_RANDOM() * 2.0 * Math.PI; - var z = (GLMAT_RANDOM() * 2.0) - 1.0; - var zScale = Math.sqrt(1.0-z*z) * scale; - - out[0] = Math.cos(r) * zScale; - out[1] = Math.sin(r) * zScale; - out[2] = z * scale; - return out; -}; - -/** - * Transforms the vec3 with a mat4. - * 4th vector component is implicitly '1' - * - * @param {vec3} out the receiving vector - * @param {vec3} a the vector to transform - * @param {mat4} m matrix to transform with - * @returns {vec3} out - */ -vec3.transformMat4 = function(out, a, m) { - var x = a[0], y = a[1], z = a[2], - w = m[3] * x + m[7] * y + m[11] * z + m[15]; - w = w || 1.0; - out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w; - out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w; - out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w; - return out; -}; - -/** - * Transforms the vec3 with a mat3. - * - * @param {vec3} out the receiving vector - * @param {vec3} a the vector to transform - * @param {mat4} m the 3x3 matrix to transform with - * @returns {vec3} out - */ -vec3.transformMat3 = function(out, a, m) { - var x = a[0], y = a[1], z = a[2]; - out[0] = x * m[0] + y * m[3] + z * m[6]; - out[1] = x * m[1] + y * m[4] + z * m[7]; - out[2] = x * m[2] + y * m[5] + z * m[8]; - return out; -}; - -/** - * Transforms the vec3 with a quat - * - * @param {vec3} out the receiving vector - * @param {vec3} a the vector to transform - * @param {quat} q quaternion to transform with - * @returns {vec3} out - */ -vec3.transformQuat = function(out, a, q) { - // benchmarks: http://jsperf.com/quaternion-transform-vec3-implementations - - var x = a[0], y = a[1], z = a[2], - qx = q[0], qy = q[1], qz = q[2], qw = q[3], - - // calculate quat * vec - ix = qw * x + qy * z - qz * y, - iy = qw * y + qz * x - qx * z, - iz = qw * z + qx * y - qy * x, - iw = -qx * x - qy * y - qz * z; - - // calculate result * inverse quat - out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy; - out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz; - out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx; - return out; -}; - -/** - * Rotate a 3D vector around the x-axis - * @param {vec3} out The receiving vec3 - * @param {vec3} a The vec3 point to rotate - * @param {vec3} b The origin of the rotation - * @param {Number} c The angle of rotation - * @returns {vec3} out - */ -vec3.rotateX = function(out, a, b, c){ - var p = [], r=[]; - //Translate point to the origin - p[0] = a[0] - b[0]; - p[1] = a[1] - b[1]; - p[2] = a[2] - b[2]; - - //perform rotation - r[0] = p[0]; - r[1] = p[1]*Math.cos(c) - p[2]*Math.sin(c); - r[2] = p[1]*Math.sin(c) + p[2]*Math.cos(c); - - //translate to correct position - out[0] = r[0] + b[0]; - out[1] = r[1] + b[1]; - out[2] = r[2] + b[2]; - - return out; -}; - -/** - * Rotate a 3D vector around the y-axis - * @param {vec3} out The receiving vec3 - * @param {vec3} a The vec3 point to rotate - * @param {vec3} b The origin of the rotation - * @param {Number} c The angle of rotation - * @returns {vec3} out - */ -vec3.rotateY = function(out, a, b, c){ - var p = [], r=[]; - //Translate point to the origin - p[0] = a[0] - b[0]; - p[1] = a[1] - b[1]; - p[2] = a[2] - b[2]; - - //perform rotation - r[0] = p[2]*Math.sin(c) + p[0]*Math.cos(c); - r[1] = p[1]; - r[2] = p[2]*Math.cos(c) - p[0]*Math.sin(c); - - //translate to correct position - out[0] = r[0] + b[0]; - out[1] = r[1] + b[1]; - out[2] = r[2] + b[2]; - - return out; -}; - -/** - * Rotate a 3D vector around the z-axis - * @param {vec3} out The receiving vec3 - * @param {vec3} a The vec3 point to rotate - * @param {vec3} b The origin of the rotation - * @param {Number} c The angle of rotation - * @returns {vec3} out - */ -vec3.rotateZ = function(out, a, b, c){ - var p = [], r=[]; - //Translate point to the origin - p[0] = a[0] - b[0]; - p[1] = a[1] - b[1]; - p[2] = a[2] - b[2]; - - //perform rotation - r[0] = p[0]*Math.cos(c) - p[1]*Math.sin(c); - r[1] = p[0]*Math.sin(c) + p[1]*Math.cos(c); - r[2] = p[2]; - - //translate to correct position - out[0] = r[0] + b[0]; - out[1] = r[1] + b[1]; - out[2] = r[2] + b[2]; - - return out; -}; - -/** - * Perform some operation over an array of vec3s. - * - * @param {Array} a the array of vectors to iterate over - * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed - * @param {Number} offset Number of elements to skip at the beginning of the array - * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array - * @param {Function} fn Function to call for each vector in the array - * @param {Object} [arg] additional argument to pass to fn - * @returns {Array} a - * @function - */ -vec3.forEach = (function() { - var vec = vec3.create(); - - return function(a, stride, offset, count, fn, arg) { - var i, l; - if(!stride) { - stride = 3; - } - - if(!offset) { - offset = 0; - } - - if(count) { - l = Math.min((count * stride) + offset, a.length); - } else { - l = a.length; - } - - for(i = offset; i < l; i += stride) { - vec[0] = a[i]; vec[1] = a[i+1]; vec[2] = a[i+2]; - fn(vec, vec, arg); - a[i] = vec[0]; a[i+1] = vec[1]; a[i+2] = vec[2]; - } - - return a; - }; -})(); - -/** - * Returns a string representation of a vector - * - * @param {vec3} vec vector to represent as a string - * @returns {String} string representation of the vector - */ -vec3.str = function (a) { - return 'vec3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ')'; -}; - -if(typeof(exports) !== 'undefined') { - exports.vec3 = vec3; -} -; -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * @class 4 Dimensional Vector - * @name vec4 - */ - -var vec4 = {}; - -/** - * Creates a new, empty vec4 - * - * @returns {vec4} a new 4D vector - */ -vec4.create = function() { - var out = new GLMAT_ARRAY_TYPE(4); - out[0] = 0; - out[1] = 0; - out[2] = 0; - out[3] = 0; - return out; -}; - -/** - * Creates a new vec4 initialized with values from an existing vector - * - * @param {vec4} a vector to clone - * @returns {vec4} a new 4D vector - */ -vec4.clone = function(a) { - var out = new GLMAT_ARRAY_TYPE(4); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - return out; -}; - -/** - * Creates a new vec4 initialized with the given values - * - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @param {Number} w W component - * @returns {vec4} a new 4D vector - */ -vec4.fromValues = function(x, y, z, w) { - var out = new GLMAT_ARRAY_TYPE(4); - out[0] = x; - out[1] = y; - out[2] = z; - out[3] = w; - return out; -}; - -/** - * Copy the values from one vec4 to another - * - * @param {vec4} out the receiving vector - * @param {vec4} a the source vector - * @returns {vec4} out - */ -vec4.copy = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - return out; -}; - -/** - * Set the components of a vec4 to the given values - * - * @param {vec4} out the receiving vector - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @param {Number} w W component - * @returns {vec4} out - */ -vec4.set = function(out, x, y, z, w) { - out[0] = x; - out[1] = y; - out[2] = z; - out[3] = w; - return out; -}; - -/** - * Adds two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -vec4.add = function(out, a, b) { - out[0] = a[0] + b[0]; - out[1] = a[1] + b[1]; - out[2] = a[2] + b[2]; - out[3] = a[3] + b[3]; - return out; -}; - -/** - * Subtracts vector b from vector a - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -vec4.subtract = function(out, a, b) { - out[0] = a[0] - b[0]; - out[1] = a[1] - b[1]; - out[2] = a[2] - b[2]; - out[3] = a[3] - b[3]; - return out; -}; - -/** - * Alias for {@link vec4.subtract} - * @function - */ -vec4.sub = vec4.subtract; - -/** - * Multiplies two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -vec4.multiply = function(out, a, b) { - out[0] = a[0] * b[0]; - out[1] = a[1] * b[1]; - out[2] = a[2] * b[2]; - out[3] = a[3] * b[3]; - return out; -}; - -/** - * Alias for {@link vec4.multiply} - * @function - */ -vec4.mul = vec4.multiply; - -/** - * Divides two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -vec4.divide = function(out, a, b) { - out[0] = a[0] / b[0]; - out[1] = a[1] / b[1]; - out[2] = a[2] / b[2]; - out[3] = a[3] / b[3]; - return out; -}; - -/** - * Alias for {@link vec4.divide} - * @function - */ -vec4.div = vec4.divide; - -/** - * Returns the minimum of two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -vec4.min = function(out, a, b) { - out[0] = Math.min(a[0], b[0]); - out[1] = Math.min(a[1], b[1]); - out[2] = Math.min(a[2], b[2]); - out[3] = Math.min(a[3], b[3]); - return out; -}; - -/** - * Returns the maximum of two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {vec4} out - */ -vec4.max = function(out, a, b) { - out[0] = Math.max(a[0], b[0]); - out[1] = Math.max(a[1], b[1]); - out[2] = Math.max(a[2], b[2]); - out[3] = Math.max(a[3], b[3]); - return out; -}; - -/** - * Scales a vec4 by a scalar number - * - * @param {vec4} out the receiving vector - * @param {vec4} a the vector to scale - * @param {Number} b amount to scale the vector by - * @returns {vec4} out - */ -vec4.scale = function(out, a, b) { - out[0] = a[0] * b; - out[1] = a[1] * b; - out[2] = a[2] * b; - out[3] = a[3] * b; - return out; -}; - -/** - * Adds two vec4's after scaling the second operand by a scalar value - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @param {Number} scale the amount to scale b by before adding - * @returns {vec4} out - */ -vec4.scaleAndAdd = function(out, a, b, scale) { - out[0] = a[0] + (b[0] * scale); - out[1] = a[1] + (b[1] * scale); - out[2] = a[2] + (b[2] * scale); - out[3] = a[3] + (b[3] * scale); - return out; -}; - -/** - * Calculates the euclidian distance between two vec4's - * - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {Number} distance between a and b - */ -vec4.distance = function(a, b) { - var x = b[0] - a[0], - y = b[1] - a[1], - z = b[2] - a[2], - w = b[3] - a[3]; - return Math.sqrt(x*x + y*y + z*z + w*w); -}; - -/** - * Alias for {@link vec4.distance} - * @function - */ -vec4.dist = vec4.distance; - -/** - * Calculates the squared euclidian distance between two vec4's - * - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {Number} squared distance between a and b - */ -vec4.squaredDistance = function(a, b) { - var x = b[0] - a[0], - y = b[1] - a[1], - z = b[2] - a[2], - w = b[3] - a[3]; - return x*x + y*y + z*z + w*w; -}; - -/** - * Alias for {@link vec4.squaredDistance} - * @function - */ -vec4.sqrDist = vec4.squaredDistance; - -/** - * Calculates the length of a vec4 - * - * @param {vec4} a vector to calculate length of - * @returns {Number} length of a - */ -vec4.length = function (a) { - var x = a[0], - y = a[1], - z = a[2], - w = a[3]; - return Math.sqrt(x*x + y*y + z*z + w*w); -}; - -/** - * Alias for {@link vec4.length} - * @function - */ -vec4.len = vec4.length; - -/** - * Calculates the squared length of a vec4 - * - * @param {vec4} a vector to calculate squared length of - * @returns {Number} squared length of a - */ -vec4.squaredLength = function (a) { - var x = a[0], - y = a[1], - z = a[2], - w = a[3]; - return x*x + y*y + z*z + w*w; -}; - -/** - * Alias for {@link vec4.squaredLength} - * @function - */ -vec4.sqrLen = vec4.squaredLength; - -/** - * Negates the components of a vec4 - * - * @param {vec4} out the receiving vector - * @param {vec4} a vector to negate - * @returns {vec4} out - */ -vec4.negate = function(out, a) { - out[0] = -a[0]; - out[1] = -a[1]; - out[2] = -a[2]; - out[3] = -a[3]; - return out; -}; - -/** - * Returns the inverse of the components of a vec4 - * - * @param {vec4} out the receiving vector - * @param {vec4} a vector to invert - * @returns {vec4} out - */ -vec4.inverse = function(out, a) { - out[0] = 1.0 / a[0]; - out[1] = 1.0 / a[1]; - out[2] = 1.0 / a[2]; - out[3] = 1.0 / a[3]; - return out; -}; - -/** - * Normalize a vec4 - * - * @param {vec4} out the receiving vector - * @param {vec4} a vector to normalize - * @returns {vec4} out - */ -vec4.normalize = function(out, a) { - var x = a[0], - y = a[1], - z = a[2], - w = a[3]; - var len = x*x + y*y + z*z + w*w; - if (len > 0) { - len = 1 / Math.sqrt(len); - out[0] = a[0] * len; - out[1] = a[1] * len; - out[2] = a[2] * len; - out[3] = a[3] * len; - } - return out; -}; - -/** - * Calculates the dot product of two vec4's - * - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @returns {Number} dot product of a and b - */ -vec4.dot = function (a, b) { - return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]; -}; - -/** - * Performs a linear interpolation between two vec4's - * - * @param {vec4} out the receiving vector - * @param {vec4} a the first operand - * @param {vec4} b the second operand - * @param {Number} t interpolation amount between the two inputs - * @returns {vec4} out - */ -vec4.lerp = function (out, a, b, t) { - var ax = a[0], - ay = a[1], - az = a[2], - aw = a[3]; - out[0] = ax + t * (b[0] - ax); - out[1] = ay + t * (b[1] - ay); - out[2] = az + t * (b[2] - az); - out[3] = aw + t * (b[3] - aw); - return out; -}; - -/** - * Generates a random vector with the given scale - * - * @param {vec4} out the receiving vector - * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned - * @returns {vec4} out - */ -vec4.random = function (out, scale) { - scale = scale || 1.0; - - //TODO: This is a pretty awful way of doing this. Find something better. - out[0] = GLMAT_RANDOM(); - out[1] = GLMAT_RANDOM(); - out[2] = GLMAT_RANDOM(); - out[3] = GLMAT_RANDOM(); - vec4.normalize(out, out); - vec4.scale(out, out, scale); - return out; -}; - -/** - * Transforms the vec4 with a mat4. - * - * @param {vec4} out the receiving vector - * @param {vec4} a the vector to transform - * @param {mat4} m matrix to transform with - * @returns {vec4} out - */ -vec4.transformMat4 = function(out, a, m) { - var x = a[0], y = a[1], z = a[2], w = a[3]; - out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w; - out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w; - out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w; - out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w; - return out; -}; - -/** - * Transforms the vec4 with a quat - * - * @param {vec4} out the receiving vector - * @param {vec4} a the vector to transform - * @param {quat} q quaternion to transform with - * @returns {vec4} out - */ -vec4.transformQuat = function(out, a, q) { - var x = a[0], y = a[1], z = a[2], - qx = q[0], qy = q[1], qz = q[2], qw = q[3], - - // calculate quat * vec - ix = qw * x + qy * z - qz * y, - iy = qw * y + qz * x - qx * z, - iz = qw * z + qx * y - qy * x, - iw = -qx * x - qy * y - qz * z; - - // calculate result * inverse quat - out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy; - out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz; - out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx; - return out; -}; - -/** - * Perform some operation over an array of vec4s. - * - * @param {Array} a the array of vectors to iterate over - * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed - * @param {Number} offset Number of elements to skip at the beginning of the array - * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array - * @param {Function} fn Function to call for each vector in the array - * @param {Object} [arg] additional argument to pass to fn - * @returns {Array} a - * @function - */ -vec4.forEach = (function() { - var vec = vec4.create(); - - return function(a, stride, offset, count, fn, arg) { - var i, l; - if(!stride) { - stride = 4; - } - - if(!offset) { - offset = 0; - } - - if(count) { - l = Math.min((count * stride) + offset, a.length); - } else { - l = a.length; - } - - for(i = offset; i < l; i += stride) { - vec[0] = a[i]; vec[1] = a[i+1]; vec[2] = a[i+2]; vec[3] = a[i+3]; - fn(vec, vec, arg); - a[i] = vec[0]; a[i+1] = vec[1]; a[i+2] = vec[2]; a[i+3] = vec[3]; - } - - return a; - }; -})(); - -/** - * Returns a string representation of a vector - * - * @param {vec4} vec vector to represent as a string - * @returns {String} string representation of the vector - */ -vec4.str = function (a) { - return 'vec4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')'; -}; - -if(typeof(exports) !== 'undefined') { - exports.vec4 = vec4; -} -; -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * @class 2x2 Matrix - * @name mat2 - */ - -var mat2 = {}; - -/** - * Creates a new identity mat2 - * - * @returns {mat2} a new 2x2 matrix - */ -mat2.create = function() { - var out = new GLMAT_ARRAY_TYPE(4); - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 1; - return out; -}; - -/** - * Creates a new mat2 initialized with values from an existing matrix - * - * @param {mat2} a matrix to clone - * @returns {mat2} a new 2x2 matrix - */ -mat2.clone = function(a) { - var out = new GLMAT_ARRAY_TYPE(4); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - return out; -}; - -/** - * Copy the values from one mat2 to another - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the source matrix - * @returns {mat2} out - */ -mat2.copy = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - return out; -}; - -/** - * Set a mat2 to the identity matrix - * - * @param {mat2} out the receiving matrix - * @returns {mat2} out - */ -mat2.identity = function(out) { - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 1; - return out; -}; - -/** - * Transpose the values of a mat2 - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the source matrix - * @returns {mat2} out - */ -mat2.transpose = function(out, a) { - // If we are transposing ourselves we can skip a few steps but have to cache some values - if (out === a) { - var a1 = a[1]; - out[1] = a[2]; - out[2] = a1; - } else { - out[0] = a[0]; - out[1] = a[2]; - out[2] = a[1]; - out[3] = a[3]; - } - - return out; -}; - -/** - * Inverts a mat2 - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the source matrix - * @returns {mat2} out - */ -mat2.invert = function(out, a) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], - - // Calculate the determinant - det = a0 * a3 - a2 * a1; - - if (!det) { - return null; - } - det = 1.0 / det; - - out[0] = a3 * det; - out[1] = -a1 * det; - out[2] = -a2 * det; - out[3] = a0 * det; - - return out; -}; - -/** - * Calculates the adjugate of a mat2 - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the source matrix - * @returns {mat2} out - */ -mat2.adjoint = function(out, a) { - // Caching this value is nessecary if out == a - var a0 = a[0]; - out[0] = a[3]; - out[1] = -a[1]; - out[2] = -a[2]; - out[3] = a0; - - return out; -}; - -/** - * Calculates the determinant of a mat2 - * - * @param {mat2} a the source matrix - * @returns {Number} determinant of a - */ -mat2.determinant = function (a) { - return a[0] * a[3] - a[2] * a[1]; -}; - -/** - * Multiplies two mat2's - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the first operand - * @param {mat2} b the second operand - * @returns {mat2} out - */ -mat2.multiply = function (out, a, b) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; - var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; - out[0] = a0 * b0 + a2 * b1; - out[1] = a1 * b0 + a3 * b1; - out[2] = a0 * b2 + a2 * b3; - out[3] = a1 * b2 + a3 * b3; - return out; -}; - -/** - * Alias for {@link mat2.multiply} - * @function - */ -mat2.mul = mat2.multiply; - -/** - * Rotates a mat2 by the given angle - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat2} out - */ -mat2.rotate = function (out, a, rad) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], - s = Math.sin(rad), - c = Math.cos(rad); - out[0] = a0 * c + a2 * s; - out[1] = a1 * c + a3 * s; - out[2] = a0 * -s + a2 * c; - out[3] = a1 * -s + a3 * c; - return out; -}; - -/** - * Scales the mat2 by the dimensions in the given vec2 - * - * @param {mat2} out the receiving matrix - * @param {mat2} a the matrix to rotate - * @param {vec2} v the vec2 to scale the matrix by - * @returns {mat2} out - **/ -mat2.scale = function(out, a, v) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], - v0 = v[0], v1 = v[1]; - out[0] = a0 * v0; - out[1] = a1 * v0; - out[2] = a2 * v1; - out[3] = a3 * v1; - return out; -}; - -/** - * Returns a string representation of a mat2 - * - * @param {mat2} mat matrix to represent as a string - * @returns {String} string representation of the matrix - */ -mat2.str = function (a) { - return 'mat2(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')'; -}; - -/** - * Returns Frobenius norm of a mat2 - * - * @param {mat2} a the matrix to calculate Frobenius norm of - * @returns {Number} Frobenius norm - */ -mat2.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))) -}; - -/** - * Returns L, D and U matrices (Lower triangular, Diagonal and Upper triangular) by factorizing the input matrix - * @param {mat2} L the lower triangular matrix - * @param {mat2} D the diagonal matrix - * @param {mat2} U the upper triangular matrix - * @param {mat2} a the input matrix to factorize - */ - -mat2.LDU = function (L, D, U, a) { - L[2] = a[2]/a[0]; - U[0] = a[0]; - U[1] = a[1]; - U[3] = a[3] - L[2] * U[1]; - return [L, D, U]; -}; - -if(typeof(exports) !== 'undefined') { - exports.mat2 = mat2; -} -; -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * @class 2x3 Matrix - * @name mat2d - * - * @description - * A mat2d contains six elements defined as: - *
- * [a, c, tx,
- *  b, d, ty]
- * 
- * This is a short form for the 3x3 matrix: - *
- * [a, c, tx,
- *  b, d, ty,
- *  0, 0, 1]
- * 
- * The last row is ignored so the array is shorter and operations are faster. - */ - -var mat2d = {}; - -/** - * Creates a new identity mat2d - * - * @returns {mat2d} a new 2x3 matrix - */ -mat2d.create = function() { - var out = new GLMAT_ARRAY_TYPE(6); - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 1; - out[4] = 0; - out[5] = 0; - return out; -}; - -/** - * Creates a new mat2d initialized with values from an existing matrix - * - * @param {mat2d} a matrix to clone - * @returns {mat2d} a new 2x3 matrix - */ -mat2d.clone = function(a) { - var out = new GLMAT_ARRAY_TYPE(6); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - return out; -}; - -/** - * Copy the values from one mat2d to another - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the source matrix - * @returns {mat2d} out - */ -mat2d.copy = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - return out; -}; - -/** - * Set a mat2d to the identity matrix - * - * @param {mat2d} out the receiving matrix - * @returns {mat2d} out - */ -mat2d.identity = function(out) { - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 1; - out[4] = 0; - out[5] = 0; - return out; -}; - -/** - * Inverts a mat2d - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the source matrix - * @returns {mat2d} out - */ -mat2d.invert = function(out, a) { - var aa = a[0], ab = a[1], ac = a[2], ad = a[3], - atx = a[4], aty = a[5]; - - var det = aa * ad - ab * ac; - if(!det){ - return null; - } - det = 1.0 / det; - - out[0] = ad * det; - out[1] = -ab * det; - out[2] = -ac * det; - out[3] = aa * det; - out[4] = (ac * aty - ad * atx) * det; - out[5] = (ab * atx - aa * aty) * det; - return out; -}; - -/** - * Calculates the determinant of a mat2d - * - * @param {mat2d} a the source matrix - * @returns {Number} determinant of a - */ -mat2d.determinant = function (a) { - return a[0] * a[3] - a[1] * a[2]; -}; - -/** - * Multiplies two mat2d's - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the first operand - * @param {mat2d} b the second operand - * @returns {mat2d} out - */ -mat2d.multiply = function (out, a, b) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], - b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5]; - out[0] = a0 * b0 + a2 * b1; - out[1] = a1 * b0 + a3 * b1; - out[2] = a0 * b2 + a2 * b3; - out[3] = a1 * b2 + a3 * b3; - out[4] = a0 * b4 + a2 * b5 + a4; - out[5] = a1 * b4 + a3 * b5 + a5; - return out; -}; - -/** - * Alias for {@link mat2d.multiply} - * @function - */ -mat2d.mul = mat2d.multiply; - - -/** - * Rotates a mat2d by the given angle - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat2d} out - */ -mat2d.rotate = function (out, a, rad) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], - s = Math.sin(rad), - c = Math.cos(rad); - out[0] = a0 * c + a2 * s; - out[1] = a1 * c + a3 * s; - out[2] = a0 * -s + a2 * c; - out[3] = a1 * -s + a3 * c; - out[4] = a4; - out[5] = a5; - return out; -}; - -/** - * Scales the mat2d by the dimensions in the given vec2 - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the matrix to translate - * @param {vec2} v the vec2 to scale the matrix by - * @returns {mat2d} out - **/ -mat2d.scale = function(out, a, v) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], - v0 = v[0], v1 = v[1]; - out[0] = a0 * v0; - out[1] = a1 * v0; - out[2] = a2 * v1; - out[3] = a3 * v1; - out[4] = a4; - out[5] = a5; - return out; -}; - -/** - * Translates the mat2d by the dimensions in the given vec2 - * - * @param {mat2d} out the receiving matrix - * @param {mat2d} a the matrix to translate - * @param {vec2} v the vec2 to translate the matrix by - * @returns {mat2d} out - **/ -mat2d.translate = function(out, a, v) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], - v0 = v[0], v1 = v[1]; - out[0] = a0; - out[1] = a1; - out[2] = a2; - out[3] = a3; - out[4] = a0 * v0 + a2 * v1 + a4; - out[5] = a1 * v0 + a3 * v1 + a5; - return out; -}; - -/** - * Returns a string representation of a mat2d - * - * @param {mat2d} a matrix to represent as a string - * @returns {String} string representation of the matrix - */ -mat2d.str = function (a) { - return 'mat2d(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + - a[3] + ', ' + a[4] + ', ' + a[5] + ')'; -}; - -/** - * Returns Frobenius norm of a mat2d - * - * @param {mat2d} a the matrix to calculate Frobenius norm of - * @returns {Number} Frobenius norm - */ -mat2d.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)) -}; - -if(typeof(exports) !== 'undefined') { - exports.mat2d = mat2d; -} -; -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * @class 3x3 Matrix - * @name mat3 - */ - -var mat3 = {}; - -/** - * Creates a new identity mat3 - * - * @returns {mat3} a new 3x3 matrix - */ -mat3.create = function() { - var out = new GLMAT_ARRAY_TYPE(9); - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 1; - out[5] = 0; - out[6] = 0; - out[7] = 0; - out[8] = 1; - return out; -}; - -/** - * Copies the upper-left 3x3 values into the given mat3. - * - * @param {mat3} out the receiving 3x3 matrix - * @param {mat4} a the source 4x4 matrix - * @returns {mat3} out - */ -mat3.fromMat4 = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[4]; - out[4] = a[5]; - out[5] = a[6]; - out[6] = a[8]; - out[7] = a[9]; - out[8] = a[10]; - return out; -}; - -/** - * Creates a new mat3 initialized with values from an existing matrix - * - * @param {mat3} a matrix to clone - * @returns {mat3} a new 3x3 matrix - */ -mat3.clone = function(a) { - var out = new GLMAT_ARRAY_TYPE(9); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - out[6] = a[6]; - out[7] = a[7]; - out[8] = a[8]; - return out; -}; - -/** - * Copy the values from one mat3 to another - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the source matrix - * @returns {mat3} out - */ -mat3.copy = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - out[6] = a[6]; - out[7] = a[7]; - out[8] = a[8]; - return out; -}; - -/** - * Set a mat3 to the identity matrix - * - * @param {mat3} out the receiving matrix - * @returns {mat3} out - */ -mat3.identity = function(out) { - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 1; - out[5] = 0; - out[6] = 0; - out[7] = 0; - out[8] = 1; - return out; -}; - -/** - * Transpose the values of a mat3 - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the source matrix - * @returns {mat3} out - */ -mat3.transpose = function(out, a) { - // If we are transposing ourselves we can skip a few steps but have to cache some values - if (out === a) { - var a01 = a[1], a02 = a[2], a12 = a[5]; - out[1] = a[3]; - out[2] = a[6]; - out[3] = a01; - out[5] = a[7]; - out[6] = a02; - out[7] = a12; - } else { - out[0] = a[0]; - out[1] = a[3]; - out[2] = a[6]; - out[3] = a[1]; - out[4] = a[4]; - out[5] = a[7]; - out[6] = a[2]; - out[7] = a[5]; - out[8] = a[8]; - } - - return out; -}; - -/** - * Inverts a mat3 - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the source matrix - * @returns {mat3} out - */ -mat3.invert = function(out, a) { - var a00 = a[0], a01 = a[1], a02 = a[2], - a10 = a[3], a11 = a[4], a12 = a[5], - a20 = a[6], a21 = a[7], a22 = a[8], - - b01 = a22 * a11 - a12 * a21, - b11 = -a22 * a10 + a12 * a20, - b21 = a21 * a10 - a11 * a20, - - // Calculate the determinant - det = a00 * b01 + a01 * b11 + a02 * b21; - - if (!det) { - return null; - } - det = 1.0 / det; - - out[0] = b01 * det; - out[1] = (-a22 * a01 + a02 * a21) * det; - out[2] = (a12 * a01 - a02 * a11) * det; - out[3] = b11 * det; - out[4] = (a22 * a00 - a02 * a20) * det; - out[5] = (-a12 * a00 + a02 * a10) * det; - out[6] = b21 * det; - out[7] = (-a21 * a00 + a01 * a20) * det; - out[8] = (a11 * a00 - a01 * a10) * det; - return out; -}; - -/** - * Calculates the adjugate of a mat3 - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the source matrix - * @returns {mat3} out - */ -mat3.adjoint = function(out, a) { - var a00 = a[0], a01 = a[1], a02 = a[2], - a10 = a[3], a11 = a[4], a12 = a[5], - a20 = a[6], a21 = a[7], a22 = a[8]; - - out[0] = (a11 * a22 - a12 * a21); - out[1] = (a02 * a21 - a01 * a22); - out[2] = (a01 * a12 - a02 * a11); - out[3] = (a12 * a20 - a10 * a22); - out[4] = (a00 * a22 - a02 * a20); - out[5] = (a02 * a10 - a00 * a12); - out[6] = (a10 * a21 - a11 * a20); - out[7] = (a01 * a20 - a00 * a21); - out[8] = (a00 * a11 - a01 * a10); - return out; -}; - -/** - * Calculates the determinant of a mat3 - * - * @param {mat3} a the source matrix - * @returns {Number} determinant of a - */ -mat3.determinant = function (a) { - var a00 = a[0], a01 = a[1], a02 = a[2], - a10 = a[3], a11 = a[4], a12 = a[5], - a20 = a[6], a21 = a[7], a22 = a[8]; - - return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20); -}; - -/** - * Multiplies two mat3's - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the first operand - * @param {mat3} b the second operand - * @returns {mat3} out - */ -mat3.multiply = function (out, a, b) { - var a00 = a[0], a01 = a[1], a02 = a[2], - a10 = a[3], a11 = a[4], a12 = a[5], - a20 = a[6], a21 = a[7], a22 = a[8], - - b00 = b[0], b01 = b[1], b02 = b[2], - b10 = b[3], b11 = b[4], b12 = b[5], - b20 = b[6], b21 = b[7], b22 = b[8]; - - out[0] = b00 * a00 + b01 * a10 + b02 * a20; - out[1] = b00 * a01 + b01 * a11 + b02 * a21; - out[2] = b00 * a02 + b01 * a12 + b02 * a22; - - out[3] = b10 * a00 + b11 * a10 + b12 * a20; - out[4] = b10 * a01 + b11 * a11 + b12 * a21; - out[5] = b10 * a02 + b11 * a12 + b12 * a22; - - out[6] = b20 * a00 + b21 * a10 + b22 * a20; - out[7] = b20 * a01 + b21 * a11 + b22 * a21; - out[8] = b20 * a02 + b21 * a12 + b22 * a22; - return out; -}; - -/** - * Alias for {@link mat3.multiply} - * @function - */ -mat3.mul = mat3.multiply; - -/** - * Translate a mat3 by the given vector - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the matrix to translate - * @param {vec2} v vector to translate by - * @returns {mat3} out - */ -mat3.translate = function(out, a, v) { - var a00 = a[0], a01 = a[1], a02 = a[2], - a10 = a[3], a11 = a[4], a12 = a[5], - a20 = a[6], a21 = a[7], a22 = a[8], - x = v[0], y = v[1]; - - out[0] = a00; - out[1] = a01; - out[2] = a02; - - out[3] = a10; - out[4] = a11; - out[5] = a12; - - out[6] = x * a00 + y * a10 + a20; - out[7] = x * a01 + y * a11 + a21; - out[8] = x * a02 + y * a12 + a22; - return out; -}; - -/** - * Rotates a mat3 by the given angle - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat3} out - */ -mat3.rotate = function (out, a, rad) { - var a00 = a[0], a01 = a[1], a02 = a[2], - a10 = a[3], a11 = a[4], a12 = a[5], - a20 = a[6], a21 = a[7], a22 = a[8], - - s = Math.sin(rad), - c = Math.cos(rad); - - out[0] = c * a00 + s * a10; - out[1] = c * a01 + s * a11; - out[2] = c * a02 + s * a12; - - out[3] = c * a10 - s * a00; - out[4] = c * a11 - s * a01; - out[5] = c * a12 - s * a02; - - out[6] = a20; - out[7] = a21; - out[8] = a22; - return out; -}; - -/** - * Scales the mat3 by the dimensions in the given vec2 - * - * @param {mat3} out the receiving matrix - * @param {mat3} a the matrix to rotate - * @param {vec2} v the vec2 to scale the matrix by - * @returns {mat3} out - **/ -mat3.scale = function(out, a, v) { - var x = v[0], y = v[1]; - - out[0] = x * a[0]; - out[1] = x * a[1]; - out[2] = x * a[2]; - - out[3] = y * a[3]; - out[4] = y * a[4]; - out[5] = y * a[5]; - - out[6] = a[6]; - out[7] = a[7]; - out[8] = a[8]; - return out; -}; - -/** - * Copies the values from a mat2d into a mat3 - * - * @param {mat3} out the receiving matrix - * @param {mat2d} a the matrix to copy - * @returns {mat3} out - **/ -mat3.fromMat2d = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = 0; - - out[3] = a[2]; - out[4] = a[3]; - out[5] = 0; - - out[6] = a[4]; - out[7] = a[5]; - out[8] = 1; - return out; -}; - -/** -* Calculates a 3x3 matrix from the given quaternion -* -* @param {mat3} out mat3 receiving operation result -* @param {quat} q Quaternion to create matrix from -* -* @returns {mat3} out -*/ -mat3.fromQuat = function (out, q) { - var x = q[0], y = q[1], z = q[2], w = q[3], - x2 = x + x, - y2 = y + y, - z2 = z + z, - - xx = x * x2, - yx = y * x2, - yy = y * y2, - zx = z * x2, - zy = z * y2, - zz = z * z2, - wx = w * x2, - wy = w * y2, - wz = w * z2; - - out[0] = 1 - yy - zz; - out[3] = yx - wz; - out[6] = zx + wy; - - out[1] = yx + wz; - out[4] = 1 - xx - zz; - out[7] = zy - wx; - - out[2] = zx - wy; - out[5] = zy + wx; - out[8] = 1 - xx - yy; - - return out; -}; - -/** -* Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix -* -* @param {mat3} out mat3 receiving operation result -* @param {mat4} a Mat4 to derive the normal matrix from -* -* @returns {mat3} out -*/ -mat3.normalFromMat4 = function (out, a) { - var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], - a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], - a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], - a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15], - - b00 = a00 * a11 - a01 * a10, - b01 = a00 * a12 - a02 * a10, - b02 = a00 * a13 - a03 * a10, - b03 = a01 * a12 - a02 * a11, - b04 = a01 * a13 - a03 * a11, - b05 = a02 * a13 - a03 * a12, - b06 = a20 * a31 - a21 * a30, - b07 = a20 * a32 - a22 * a30, - b08 = a20 * a33 - a23 * a30, - b09 = a21 * a32 - a22 * a31, - b10 = a21 * a33 - a23 * a31, - b11 = a22 * a33 - a23 * a32, - - // Calculate the determinant - det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; - - if (!det) { - return null; - } - det = 1.0 / det; - - out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; - out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det; - out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det; - - out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det; - out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det; - out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det; - - out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det; - out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det; - out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det; - - return out; -}; - -/** - * Returns a string representation of a mat3 - * - * @param {mat3} mat matrix to represent as a string - * @returns {String} string representation of the matrix - */ -mat3.str = function (a) { - return 'mat3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + - a[3] + ', ' + a[4] + ', ' + a[5] + ', ' + - a[6] + ', ' + a[7] + ', ' + a[8] + ')'; -}; - -/** - * Returns Frobenius norm of a mat3 - * - * @param {mat3} a the matrix to calculate Frobenius norm of - * @returns {Number} Frobenius norm - */ -mat3.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))) -}; - - -if(typeof(exports) !== 'undefined') { - exports.mat3 = mat3; -} -; -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * @class 4x4 Matrix - * @name mat4 - */ - -var mat4 = {}; - -/** - * Creates a new identity mat4 - * - * @returns {mat4} a new 4x4 matrix - */ -mat4.create = function() { - var out = new GLMAT_ARRAY_TYPE(16); - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = 1; - out[6] = 0; - out[7] = 0; - out[8] = 0; - out[9] = 0; - out[10] = 1; - out[11] = 0; - out[12] = 0; - out[13] = 0; - out[14] = 0; - out[15] = 1; - return out; -}; - -/** - * Creates a new mat4 initialized with values from an existing matrix - * - * @param {mat4} a matrix to clone - * @returns {mat4} a new 4x4 matrix - */ -mat4.clone = function(a) { - var out = new GLMAT_ARRAY_TYPE(16); - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - out[6] = a[6]; - out[7] = a[7]; - out[8] = a[8]; - out[9] = a[9]; - out[10] = a[10]; - out[11] = a[11]; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - return out; -}; - -/** - * Copy the values from one mat4 to another - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the source matrix - * @returns {mat4} out - */ -mat4.copy = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[4] = a[4]; - out[5] = a[5]; - out[6] = a[6]; - out[7] = a[7]; - out[8] = a[8]; - out[9] = a[9]; - out[10] = a[10]; - out[11] = a[11]; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - return out; -}; - -/** - * Set a mat4 to the identity matrix - * - * @param {mat4} out the receiving matrix - * @returns {mat4} out - */ -mat4.identity = function(out) { - out[0] = 1; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = 1; - out[6] = 0; - out[7] = 0; - out[8] = 0; - out[9] = 0; - out[10] = 1; - out[11] = 0; - out[12] = 0; - out[13] = 0; - out[14] = 0; - out[15] = 1; - return out; -}; - -/** - * Transpose the values of a mat4 - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the source matrix - * @returns {mat4} out - */ -mat4.transpose = function(out, a) { - // If we are transposing ourselves we can skip a few steps but have to cache some values - if (out === a) { - var a01 = a[1], a02 = a[2], a03 = a[3], - a12 = a[6], a13 = a[7], - a23 = a[11]; - - out[1] = a[4]; - out[2] = a[8]; - out[3] = a[12]; - out[4] = a01; - out[6] = a[9]; - out[7] = a[13]; - out[8] = a02; - out[9] = a12; - out[11] = a[14]; - out[12] = a03; - out[13] = a13; - out[14] = a23; - } else { - out[0] = a[0]; - out[1] = a[4]; - out[2] = a[8]; - out[3] = a[12]; - out[4] = a[1]; - out[5] = a[5]; - out[6] = a[9]; - out[7] = a[13]; - out[8] = a[2]; - out[9] = a[6]; - out[10] = a[10]; - out[11] = a[14]; - out[12] = a[3]; - out[13] = a[7]; - out[14] = a[11]; - out[15] = a[15]; - } - - return out; -}; - -/** - * Inverts a mat4 - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the source matrix - * @returns {mat4} out - */ -mat4.invert = function(out, a) { - var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], - a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], - a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], - a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15], - - b00 = a00 * a11 - a01 * a10, - b01 = a00 * a12 - a02 * a10, - b02 = a00 * a13 - a03 * a10, - b03 = a01 * a12 - a02 * a11, - b04 = a01 * a13 - a03 * a11, - b05 = a02 * a13 - a03 * a12, - b06 = a20 * a31 - a21 * a30, - b07 = a20 * a32 - a22 * a30, - b08 = a20 * a33 - a23 * a30, - b09 = a21 * a32 - a22 * a31, - b10 = a21 * a33 - a23 * a31, - b11 = a22 * a33 - a23 * a32, - - // Calculate the determinant - det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; - - if (!det) { - return null; - } - det = 1.0 / det; - - out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; - out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det; - out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det; - out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det; - out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det; - out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det; - out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det; - out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det; - out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det; - out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det; - out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det; - out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det; - out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det; - out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det; - out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det; - out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det; - - return out; -}; - -/** - * Calculates the adjugate of a mat4 - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the source matrix - * @returns {mat4} out - */ -mat4.adjoint = function(out, a) { - var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], - a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], - a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], - a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; - - out[0] = (a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22)); - out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22)); - out[2] = (a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12)); - out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12)); - out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22)); - out[5] = (a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22)); - out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12)); - out[7] = (a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12)); - out[8] = (a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21)); - out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21)); - out[10] = (a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11)); - out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11)); - out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21)); - out[13] = (a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21)); - out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11)); - out[15] = (a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11)); - return out; -}; - -/** - * Calculates the determinant of a mat4 - * - * @param {mat4} a the source matrix - * @returns {Number} determinant of a - */ -mat4.determinant = function (a) { - var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], - a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], - a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], - a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15], - - b00 = a00 * a11 - a01 * a10, - b01 = a00 * a12 - a02 * a10, - b02 = a00 * a13 - a03 * a10, - b03 = a01 * a12 - a02 * a11, - b04 = a01 * a13 - a03 * a11, - b05 = a02 * a13 - a03 * a12, - b06 = a20 * a31 - a21 * a30, - b07 = a20 * a32 - a22 * a30, - b08 = a20 * a33 - a23 * a30, - b09 = a21 * a32 - a22 * a31, - b10 = a21 * a33 - a23 * a31, - b11 = a22 * a33 - a23 * a32; - - // Calculate the determinant - return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; -}; - -/** - * Multiplies two mat4's - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the first operand - * @param {mat4} b the second operand - * @returns {mat4} out - */ -mat4.multiply = function (out, a, b) { - var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], - a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], - a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], - a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; - - // Cache only the current line of the second matrix - var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; - out[0] = b0*a00 + b1*a10 + b2*a20 + b3*a30; - out[1] = b0*a01 + b1*a11 + b2*a21 + b3*a31; - out[2] = b0*a02 + b1*a12 + b2*a22 + b3*a32; - out[3] = b0*a03 + b1*a13 + b2*a23 + b3*a33; - - b0 = b[4]; b1 = b[5]; b2 = b[6]; b3 = b[7]; - out[4] = b0*a00 + b1*a10 + b2*a20 + b3*a30; - out[5] = b0*a01 + b1*a11 + b2*a21 + b3*a31; - out[6] = b0*a02 + b1*a12 + b2*a22 + b3*a32; - out[7] = b0*a03 + b1*a13 + b2*a23 + b3*a33; - - b0 = b[8]; b1 = b[9]; b2 = b[10]; b3 = b[11]; - out[8] = b0*a00 + b1*a10 + b2*a20 + b3*a30; - out[9] = b0*a01 + b1*a11 + b2*a21 + b3*a31; - out[10] = b0*a02 + b1*a12 + b2*a22 + b3*a32; - out[11] = b0*a03 + b1*a13 + b2*a23 + b3*a33; - - b0 = b[12]; b1 = b[13]; b2 = b[14]; b3 = b[15]; - out[12] = b0*a00 + b1*a10 + b2*a20 + b3*a30; - out[13] = b0*a01 + b1*a11 + b2*a21 + b3*a31; - out[14] = b0*a02 + b1*a12 + b2*a22 + b3*a32; - out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33; - return out; -}; - -/** - * Alias for {@link mat4.multiply} - * @function - */ -mat4.mul = mat4.multiply; - -/** - * Translate a mat4 by the given vector - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to translate - * @param {vec3} v vector to translate by - * @returns {mat4} out - */ -mat4.translate = function (out, a, v) { - var x = v[0], y = v[1], z = v[2], - a00, a01, a02, a03, - a10, a11, a12, a13, - a20, a21, a22, a23; - - if (a === out) { - out[12] = a[0] * x + a[4] * y + a[8] * z + a[12]; - out[13] = a[1] * x + a[5] * y + a[9] * z + a[13]; - out[14] = a[2] * x + a[6] * y + a[10] * z + a[14]; - out[15] = a[3] * x + a[7] * y + a[11] * z + a[15]; - } else { - a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3]; - a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7]; - a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11]; - - out[0] = a00; out[1] = a01; out[2] = a02; out[3] = a03; - out[4] = a10; out[5] = a11; out[6] = a12; out[7] = a13; - out[8] = a20; out[9] = a21; out[10] = a22; out[11] = a23; - - out[12] = a00 * x + a10 * y + a20 * z + a[12]; - out[13] = a01 * x + a11 * y + a21 * z + a[13]; - out[14] = a02 * x + a12 * y + a22 * z + a[14]; - out[15] = a03 * x + a13 * y + a23 * z + a[15]; - } - - return out; -}; - -/** - * Scales the mat4 by the dimensions in the given vec3 - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to scale - * @param {vec3} v the vec3 to scale the matrix by - * @returns {mat4} out - **/ -mat4.scale = function(out, a, v) { - var x = v[0], y = v[1], z = v[2]; - - out[0] = a[0] * x; - out[1] = a[1] * x; - out[2] = a[2] * x; - out[3] = a[3] * x; - out[4] = a[4] * y; - out[5] = a[5] * y; - out[6] = a[6] * y; - out[7] = a[7] * y; - out[8] = a[8] * z; - out[9] = a[9] * z; - out[10] = a[10] * z; - out[11] = a[11] * z; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - return out; -}; - -/** - * Rotates a mat4 by the given angle - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @param {vec3} axis the axis to rotate around - * @returns {mat4} out - */ -mat4.rotate = function (out, a, rad, axis) { - var x = axis[0], y = axis[1], z = axis[2], - len = Math.sqrt(x * x + y * y + z * z), - s, c, t, - a00, a01, a02, a03, - a10, a11, a12, a13, - a20, a21, a22, a23, - b00, b01, b02, - b10, b11, b12, - b20, b21, b22; - - if (Math.abs(len) < GLMAT_EPSILON) { return null; } - - len = 1 / len; - x *= len; - y *= len; - z *= len; - - s = Math.sin(rad); - c = Math.cos(rad); - t = 1 - c; - - a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3]; - a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7]; - a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11]; - - // Construct the elements of the rotation matrix - b00 = x * x * t + c; b01 = y * x * t + z * s; b02 = z * x * t - y * s; - b10 = x * y * t - z * s; b11 = y * y * t + c; b12 = z * y * t + x * s; - b20 = x * z * t + y * s; b21 = y * z * t - x * s; b22 = z * z * t + c; - - // Perform rotation-specific matrix multiplication - out[0] = a00 * b00 + a10 * b01 + a20 * b02; - out[1] = a01 * b00 + a11 * b01 + a21 * b02; - out[2] = a02 * b00 + a12 * b01 + a22 * b02; - out[3] = a03 * b00 + a13 * b01 + a23 * b02; - out[4] = a00 * b10 + a10 * b11 + a20 * b12; - out[5] = a01 * b10 + a11 * b11 + a21 * b12; - out[6] = a02 * b10 + a12 * b11 + a22 * b12; - out[7] = a03 * b10 + a13 * b11 + a23 * b12; - out[8] = a00 * b20 + a10 * b21 + a20 * b22; - out[9] = a01 * b20 + a11 * b21 + a21 * b22; - out[10] = a02 * b20 + a12 * b21 + a22 * b22; - out[11] = a03 * b20 + a13 * b21 + a23 * b22; - - if (a !== out) { // If the source and destination differ, copy the unchanged last row - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - } - return out; -}; - -/** - * Rotates a matrix by the given angle around the X axis - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat4} out - */ -mat4.rotateX = function (out, a, rad) { - var s = Math.sin(rad), - c = Math.cos(rad), - a10 = a[4], - a11 = a[5], - a12 = a[6], - a13 = a[7], - a20 = a[8], - a21 = a[9], - a22 = a[10], - a23 = a[11]; - - if (a !== out) { // If the source and destination differ, copy the unchanged rows - out[0] = a[0]; - out[1] = a[1]; - out[2] = a[2]; - out[3] = a[3]; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - } - - // Perform axis-specific matrix multiplication - out[4] = a10 * c + a20 * s; - out[5] = a11 * c + a21 * s; - out[6] = a12 * c + a22 * s; - out[7] = a13 * c + a23 * s; - out[8] = a20 * c - a10 * s; - out[9] = a21 * c - a11 * s; - out[10] = a22 * c - a12 * s; - out[11] = a23 * c - a13 * s; - return out; -}; - -/** - * Rotates a matrix by the given angle around the Y axis - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat4} out - */ -mat4.rotateY = function (out, a, rad) { - var s = Math.sin(rad), - c = Math.cos(rad), - a00 = a[0], - a01 = a[1], - a02 = a[2], - a03 = a[3], - a20 = a[8], - a21 = a[9], - a22 = a[10], - a23 = a[11]; - - if (a !== out) { // If the source and destination differ, copy the unchanged rows - out[4] = a[4]; - out[5] = a[5]; - out[6] = a[6]; - out[7] = a[7]; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - } - - // Perform axis-specific matrix multiplication - out[0] = a00 * c - a20 * s; - out[1] = a01 * c - a21 * s; - out[2] = a02 * c - a22 * s; - out[3] = a03 * c - a23 * s; - out[8] = a00 * s + a20 * c; - out[9] = a01 * s + a21 * c; - out[10] = a02 * s + a22 * c; - out[11] = a03 * s + a23 * c; - return out; -}; - -/** - * Rotates a matrix by the given angle around the Z axis - * - * @param {mat4} out the receiving matrix - * @param {mat4} a the matrix to rotate - * @param {Number} rad the angle to rotate the matrix by - * @returns {mat4} out - */ -mat4.rotateZ = function (out, a, rad) { - var s = Math.sin(rad), - c = Math.cos(rad), - a00 = a[0], - a01 = a[1], - a02 = a[2], - a03 = a[3], - a10 = a[4], - a11 = a[5], - a12 = a[6], - a13 = a[7]; - - if (a !== out) { // If the source and destination differ, copy the unchanged last row - out[8] = a[8]; - out[9] = a[9]; - out[10] = a[10]; - out[11] = a[11]; - out[12] = a[12]; - out[13] = a[13]; - out[14] = a[14]; - out[15] = a[15]; - } - - // Perform axis-specific matrix multiplication - out[0] = a00 * c + a10 * s; - out[1] = a01 * c + a11 * s; - out[2] = a02 * c + a12 * s; - out[3] = a03 * c + a13 * s; - out[4] = a10 * c - a00 * s; - out[5] = a11 * c - a01 * s; - out[6] = a12 * c - a02 * s; - out[7] = a13 * c - a03 * s; - return out; -}; - -/** - * Creates a matrix from a quaternion rotation and vector translation - * This is equivalent to (but much faster than): - * - * mat4.identity(dest); - * mat4.translate(dest, vec); - * var quatMat = mat4.create(); - * quat4.toMat4(quat, quatMat); - * mat4.multiply(dest, quatMat); - * - * @param {mat4} out mat4 receiving operation result - * @param {quat4} q Rotation quaternion - * @param {vec3} v Translation vector - * @returns {mat4} out - */ -mat4.fromRotationTranslation = function (out, q, v) { - // Quaternion math - var x = q[0], y = q[1], z = q[2], w = q[3], - x2 = x + x, - y2 = y + y, - z2 = z + z, - - xx = x * x2, - xy = x * y2, - xz = x * z2, - yy = y * y2, - yz = y * z2, - zz = z * z2, - wx = w * x2, - wy = w * y2, - wz = w * z2; - - out[0] = 1 - (yy + zz); - out[1] = xy + wz; - out[2] = xz - wy; - out[3] = 0; - out[4] = xy - wz; - out[5] = 1 - (xx + zz); - out[6] = yz + wx; - out[7] = 0; - out[8] = xz + wy; - out[9] = yz - wx; - out[10] = 1 - (xx + yy); - out[11] = 0; - out[12] = v[0]; - out[13] = v[1]; - out[14] = v[2]; - out[15] = 1; - - return out; -}; - -mat4.fromQuat = function (out, q) { - var x = q[0], y = q[1], z = q[2], w = q[3], - x2 = x + x, - y2 = y + y, - z2 = z + z, - - xx = x * x2, - yx = y * x2, - yy = y * y2, - zx = z * x2, - zy = z * y2, - zz = z * z2, - wx = w * x2, - wy = w * y2, - wz = w * z2; - - out[0] = 1 - yy - zz; - out[1] = yx + wz; - out[2] = zx - wy; - out[3] = 0; - - out[4] = yx - wz; - out[5] = 1 - xx - zz; - out[6] = zy + wx; - out[7] = 0; - - out[8] = zx + wy; - out[9] = zy - wx; - out[10] = 1 - xx - yy; - out[11] = 0; - - out[12] = 0; - out[13] = 0; - out[14] = 0; - out[15] = 1; - - return out; -}; - -/** - * Generates a frustum matrix with the given bounds - * - * @param {mat4} out mat4 frustum matrix will be written into - * @param {Number} left Left bound of the frustum - * @param {Number} right Right bound of the frustum - * @param {Number} bottom Bottom bound of the frustum - * @param {Number} top Top bound of the frustum - * @param {Number} near Near bound of the frustum - * @param {Number} far Far bound of the frustum - * @returns {mat4} out - */ -mat4.frustum = function (out, left, right, bottom, top, near, far) { - var rl = 1 / (right - left), - tb = 1 / (top - bottom), - nf = 1 / (near - far); - out[0] = (near * 2) * rl; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = (near * 2) * tb; - out[6] = 0; - out[7] = 0; - out[8] = (right + left) * rl; - out[9] = (top + bottom) * tb; - out[10] = (far + near) * nf; - out[11] = -1; - out[12] = 0; - out[13] = 0; - out[14] = (far * near * 2) * nf; - out[15] = 0; - return out; -}; - -/** - * Generates a perspective projection matrix with the given bounds - * - * @param {mat4} out mat4 frustum matrix will be written into - * @param {number} fovy Vertical field of view in radians - * @param {number} aspect Aspect ratio. typically viewport width/height - * @param {number} near Near bound of the frustum - * @param {number} far Far bound of the frustum - * @returns {mat4} out - */ -mat4.perspective = function (out, fovy, aspect, near, far) { - var f = 1.0 / Math.tan(fovy / 2), - nf = 1 / (near - far); - out[0] = f / aspect; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = f; - out[6] = 0; - out[7] = 0; - out[8] = 0; - out[9] = 0; - out[10] = (far + near) * nf; - out[11] = -1; - out[12] = 0; - out[13] = 0; - out[14] = (2 * far * near) * nf; - out[15] = 0; - return out; -}; - -/** - * Generates a orthogonal projection matrix with the given bounds - * - * @param {mat4} out mat4 frustum matrix will be written into - * @param {number} left Left bound of the frustum - * @param {number} right Right bound of the frustum - * @param {number} bottom Bottom bound of the frustum - * @param {number} top Top bound of the frustum - * @param {number} near Near bound of the frustum - * @param {number} far Far bound of the frustum - * @returns {mat4} out - */ -mat4.ortho = function (out, left, right, bottom, top, near, far) { - var lr = 1 / (left - right), - bt = 1 / (bottom - top), - nf = 1 / (near - far); - out[0] = -2 * lr; - out[1] = 0; - out[2] = 0; - out[3] = 0; - out[4] = 0; - out[5] = -2 * bt; - out[6] = 0; - out[7] = 0; - out[8] = 0; - out[9] = 0; - out[10] = 2 * nf; - out[11] = 0; - out[12] = (left + right) * lr; - out[13] = (top + bottom) * bt; - out[14] = (far + near) * nf; - out[15] = 1; - return out; -}; - -/** - * Generates a look-at matrix with the given eye position, focal point, and up axis - * - * @param {mat4} out mat4 frustum matrix will be written into - * @param {vec3} eye Position of the viewer - * @param {vec3} center Point the viewer is looking at - * @param {vec3} up vec3 pointing up - * @returns {mat4} out - */ -mat4.lookAt = function (out, eye, center, up) { - var x0, x1, x2, y0, y1, y2, z0, z1, z2, len, - eyex = eye[0], - eyey = eye[1], - eyez = eye[2], - upx = up[0], - upy = up[1], - upz = up[2], - centerx = center[0], - centery = center[1], - centerz = center[2]; - - if (Math.abs(eyex - centerx) < GLMAT_EPSILON && - Math.abs(eyey - centery) < GLMAT_EPSILON && - Math.abs(eyez - centerz) < GLMAT_EPSILON) { - return mat4.identity(out); - } - - z0 = eyex - centerx; - z1 = eyey - centery; - z2 = eyez - centerz; - - len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2); - z0 *= len; - z1 *= len; - z2 *= len; - - x0 = upy * z2 - upz * z1; - x1 = upz * z0 - upx * z2; - x2 = upx * z1 - upy * z0; - len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2); - if (!len) { - x0 = 0; - x1 = 0; - x2 = 0; - } else { - len = 1 / len; - x0 *= len; - x1 *= len; - x2 *= len; - } - - y0 = z1 * x2 - z2 * x1; - y1 = z2 * x0 - z0 * x2; - y2 = z0 * x1 - z1 * x0; - - len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2); - if (!len) { - y0 = 0; - y1 = 0; - y2 = 0; - } else { - len = 1 / len; - y0 *= len; - y1 *= len; - y2 *= len; - } - - out[0] = x0; - out[1] = y0; - out[2] = z0; - out[3] = 0; - out[4] = x1; - out[5] = y1; - out[6] = z1; - out[7] = 0; - out[8] = x2; - out[9] = y2; - out[10] = z2; - out[11] = 0; - out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez); - out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez); - out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez); - out[15] = 1; - - return out; -}; - -/** - * Returns a string representation of a mat4 - * - * @param {mat4} mat matrix to represent as a string - * @returns {String} string representation of the matrix - */ -mat4.str = function (a) { - return 'mat4(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ', ' + - a[4] + ', ' + a[5] + ', ' + a[6] + ', ' + a[7] + ', ' + - a[8] + ', ' + a[9] + ', ' + a[10] + ', ' + a[11] + ', ' + - a[12] + ', ' + a[13] + ', ' + a[14] + ', ' + a[15] + ')'; -}; - -/** - * Returns Frobenius norm of a mat4 - * - * @param {mat4} a the matrix to calculate Frobenius norm of - * @returns {Number} Frobenius norm - */ -mat4.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) + Math.pow(a[9], 2) + Math.pow(a[10], 2) + Math.pow(a[11], 2) + Math.pow(a[12], 2) + Math.pow(a[13], 2) + Math.pow(a[14], 2) + Math.pow(a[15], 2) )) -}; - - -if(typeof(exports) !== 'undefined') { - exports.mat4 = mat4; -} -; -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * @class Quaternion - * @name quat - */ - -var quat = {}; - -/** - * Creates a new identity quat - * - * @returns {quat} a new quaternion - */ -quat.create = function() { - var out = new GLMAT_ARRAY_TYPE(4); - out[0] = 0; - out[1] = 0; - out[2] = 0; - out[3] = 1; - return out; -}; - -/** - * Sets a quaternion to represent the shortest rotation from one - * vector to another. - * - * Both vectors are assumed to be unit length. - * - * @param {quat} out the receiving quaternion. - * @param {vec3} a the initial vector - * @param {vec3} b the destination vector - * @returns {quat} out - */ -quat.rotationTo = (function() { - var tmpvec3 = vec3.create(); - var xUnitVec3 = vec3.fromValues(1,0,0); - var yUnitVec3 = vec3.fromValues(0,1,0); - - return function(out, a, b) { - var dot = vec3.dot(a, b); - if (dot < -0.999999) { - vec3.cross(tmpvec3, xUnitVec3, a); - if (vec3.length(tmpvec3) < 0.000001) - vec3.cross(tmpvec3, yUnitVec3, a); - vec3.normalize(tmpvec3, tmpvec3); - quat.setAxisAngle(out, tmpvec3, Math.PI); - return out; - } else if (dot > 0.999999) { - out[0] = 0; - out[1] = 0; - out[2] = 0; - out[3] = 1; - return out; - } else { - vec3.cross(tmpvec3, a, b); - out[0] = tmpvec3[0]; - out[1] = tmpvec3[1]; - out[2] = tmpvec3[2]; - out[3] = 1 + dot; - return quat.normalize(out, out); - } - }; -})(); - -/** - * Sets the specified quaternion with values corresponding to the given - * axes. Each axis is a vec3 and is expected to be unit length and - * perpendicular to all other specified axes. - * - * @param {vec3} view the vector representing the viewing direction - * @param {vec3} right the vector representing the local "right" direction - * @param {vec3} up the vector representing the local "up" direction - * @returns {quat} out - */ -quat.setAxes = (function() { - var matr = mat3.create(); - - return function(out, view, right, up) { - matr[0] = right[0]; - matr[3] = right[1]; - matr[6] = right[2]; - - matr[1] = up[0]; - matr[4] = up[1]; - matr[7] = up[2]; - - matr[2] = -view[0]; - matr[5] = -view[1]; - matr[8] = -view[2]; - - return quat.normalize(out, quat.fromMat3(out, matr)); - }; -})(); - -/** - * Creates a new quat initialized with values from an existing quaternion - * - * @param {quat} a quaternion to clone - * @returns {quat} a new quaternion - * @function - */ -quat.clone = vec4.clone; - -/** - * Creates a new quat initialized with the given values - * - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @param {Number} w W component - * @returns {quat} a new quaternion - * @function - */ -quat.fromValues = vec4.fromValues; - -/** - * Copy the values from one quat to another - * - * @param {quat} out the receiving quaternion - * @param {quat} a the source quaternion - * @returns {quat} out - * @function - */ -quat.copy = vec4.copy; - -/** - * Set the components of a quat to the given values - * - * @param {quat} out the receiving quaternion - * @param {Number} x X component - * @param {Number} y Y component - * @param {Number} z Z component - * @param {Number} w W component - * @returns {quat} out - * @function - */ -quat.set = vec4.set; - -/** - * Set a quat to the identity quaternion - * - * @param {quat} out the receiving quaternion - * @returns {quat} out - */ -quat.identity = function(out) { - out[0] = 0; - out[1] = 0; - out[2] = 0; - out[3] = 1; - return out; -}; - -/** - * Sets a quat from the given angle and rotation axis, - * then returns it. - * - * @param {quat} out the receiving quaternion - * @param {vec3} axis the axis around which to rotate - * @param {Number} rad the angle in radians - * @returns {quat} out - **/ -quat.setAxisAngle = function(out, axis, rad) { - rad = rad * 0.5; - var s = Math.sin(rad); - out[0] = s * axis[0]; - out[1] = s * axis[1]; - out[2] = s * axis[2]; - out[3] = Math.cos(rad); - return out; -}; - -/** - * Adds two quat's - * - * @param {quat} out the receiving quaternion - * @param {quat} a the first operand - * @param {quat} b the second operand - * @returns {quat} out - * @function - */ -quat.add = vec4.add; - -/** - * Multiplies two quat's - * - * @param {quat} out the receiving quaternion - * @param {quat} a the first operand - * @param {quat} b the second operand - * @returns {quat} out - */ -quat.multiply = function(out, a, b) { - var ax = a[0], ay = a[1], az = a[2], aw = a[3], - bx = b[0], by = b[1], bz = b[2], bw = b[3]; - - out[0] = ax * bw + aw * bx + ay * bz - az * by; - out[1] = ay * bw + aw * by + az * bx - ax * bz; - out[2] = az * bw + aw * bz + ax * by - ay * bx; - out[3] = aw * bw - ax * bx - ay * by - az * bz; - return out; -}; - -/** - * Alias for {@link quat.multiply} - * @function - */ -quat.mul = quat.multiply; - -/** - * Scales a quat by a scalar number - * - * @param {quat} out the receiving vector - * @param {quat} a the vector to scale - * @param {Number} b amount to scale the vector by - * @returns {quat} out - * @function - */ -quat.scale = vec4.scale; - -/** - * Rotates a quaternion by the given angle about the X axis - * - * @param {quat} out quat receiving operation result - * @param {quat} a quat to rotate - * @param {number} rad angle (in radians) to rotate - * @returns {quat} out - */ -quat.rotateX = function (out, a, rad) { - rad *= 0.5; - - var ax = a[0], ay = a[1], az = a[2], aw = a[3], - bx = Math.sin(rad), bw = Math.cos(rad); - - out[0] = ax * bw + aw * bx; - out[1] = ay * bw + az * bx; - out[2] = az * bw - ay * bx; - out[3] = aw * bw - ax * bx; - return out; -}; - -/** - * Rotates a quaternion by the given angle about the Y axis - * - * @param {quat} out quat receiving operation result - * @param {quat} a quat to rotate - * @param {number} rad angle (in radians) to rotate - * @returns {quat} out - */ -quat.rotateY = function (out, a, rad) { - rad *= 0.5; - - var ax = a[0], ay = a[1], az = a[2], aw = a[3], - by = Math.sin(rad), bw = Math.cos(rad); - - out[0] = ax * bw - az * by; - out[1] = ay * bw + aw * by; - out[2] = az * bw + ax * by; - out[3] = aw * bw - ay * by; - return out; -}; - -/** - * Rotates a quaternion by the given angle about the Z axis - * - * @param {quat} out quat receiving operation result - * @param {quat} a quat to rotate - * @param {number} rad angle (in radians) to rotate - * @returns {quat} out - */ -quat.rotateZ = function (out, a, rad) { - rad *= 0.5; - - var ax = a[0], ay = a[1], az = a[2], aw = a[3], - bz = Math.sin(rad), bw = Math.cos(rad); - - out[0] = ax * bw + ay * bz; - out[1] = ay * bw - ax * bz; - out[2] = az * bw + aw * bz; - out[3] = aw * bw - az * bz; - return out; -}; - -/** - * Calculates the W component of a quat from the X, Y, and Z components. - * Assumes that quaternion is 1 unit in length. - * Any existing W component will be ignored. - * - * @param {quat} out the receiving quaternion - * @param {quat} a quat to calculate W component of - * @returns {quat} out - */ -quat.calculateW = function (out, a) { - var x = a[0], y = a[1], z = a[2]; - - out[0] = x; - out[1] = y; - out[2] = z; - out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z)); - return out; -}; - -/** - * Calculates the dot product of two quat's - * - * @param {quat} a the first operand - * @param {quat} b the second operand - * @returns {Number} dot product of a and b - * @function - */ -quat.dot = vec4.dot; - -/** - * Performs a linear interpolation between two quat's - * - * @param {quat} out the receiving quaternion - * @param {quat} a the first operand - * @param {quat} b the second operand - * @param {Number} t interpolation amount between the two inputs - * @returns {quat} out - * @function - */ -quat.lerp = vec4.lerp; - -/** - * Performs a spherical linear interpolation between two quat - * - * @param {quat} out the receiving quaternion - * @param {quat} a the first operand - * @param {quat} b the second operand - * @param {Number} t interpolation amount between the two inputs - * @returns {quat} out - */ -quat.slerp = function (out, a, b, t) { - // benchmarks: - // http://jsperf.com/quaternion-slerp-implementations - - var ax = a[0], ay = a[1], az = a[2], aw = a[3], - bx = b[0], by = b[1], bz = b[2], bw = b[3]; - - var omega, cosom, sinom, scale0, scale1; - - // calc cosine - cosom = ax * bx + ay * by + az * bz + aw * bw; - // adjust signs (if necessary) - if ( cosom < 0.0 ) { - cosom = -cosom; - bx = - bx; - by = - by; - bz = - bz; - bw = - bw; - } - // calculate coefficients - if ( (1.0 - cosom) > 0.000001 ) { - // standard case (slerp) - omega = Math.acos(cosom); - sinom = Math.sin(omega); - scale0 = Math.sin((1.0 - t) * omega) / sinom; - scale1 = Math.sin(t * omega) / sinom; - } else { - // "from" and "to" quaternions are very close - // ... so we can do a linear interpolation - scale0 = 1.0 - t; - scale1 = t; - } - // calculate final values - out[0] = scale0 * ax + scale1 * bx; - out[1] = scale0 * ay + scale1 * by; - out[2] = scale0 * az + scale1 * bz; - out[3] = scale0 * aw + scale1 * bw; - - return out; -}; - -/** - * Calculates the inverse of a quat - * - * @param {quat} out the receiving quaternion - * @param {quat} a quat to calculate inverse of - * @returns {quat} out - */ -quat.invert = function(out, a) { - var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], - dot = a0*a0 + a1*a1 + a2*a2 + a3*a3, - invDot = dot ? 1.0/dot : 0; - - // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0 - - out[0] = -a0*invDot; - out[1] = -a1*invDot; - out[2] = -a2*invDot; - out[3] = a3*invDot; - return out; -}; - -/** - * Calculates the conjugate of a quat - * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result. - * - * @param {quat} out the receiving quaternion - * @param {quat} a quat to calculate conjugate of - * @returns {quat} out - */ -quat.conjugate = function (out, a) { - out[0] = -a[0]; - out[1] = -a[1]; - out[2] = -a[2]; - out[3] = a[3]; - return out; -}; - -/** - * Calculates the length of a quat - * - * @param {quat} a vector to calculate length of - * @returns {Number} length of a - * @function - */ -quat.length = vec4.length; - -/** - * Alias for {@link quat.length} - * @function - */ -quat.len = quat.length; - -/** - * Calculates the squared length of a quat - * - * @param {quat} a vector to calculate squared length of - * @returns {Number} squared length of a - * @function - */ -quat.squaredLength = vec4.squaredLength; - -/** - * Alias for {@link quat.squaredLength} - * @function - */ -quat.sqrLen = quat.squaredLength; - -/** - * Normalize a quat - * - * @param {quat} out the receiving quaternion - * @param {quat} a quaternion to normalize - * @returns {quat} out - * @function - */ -quat.normalize = vec4.normalize; - -/** - * Creates a quaternion from the given 3x3 rotation matrix. - * - * NOTE: The resultant quaternion is not normalized, so you should be sure - * to renormalize the quaternion yourself where necessary. - * - * @param {quat} out the receiving quaternion - * @param {mat3} m rotation matrix - * @returns {quat} out - * @function - */ -quat.fromMat3 = function(out, m) { - // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes - // article "Quaternion Calculus and Fast Animation". - var fTrace = m[0] + m[4] + m[8]; - var fRoot; - - if ( fTrace > 0.0 ) { - // |w| > 1/2, may as well choose w > 1/2 - fRoot = Math.sqrt(fTrace + 1.0); // 2w - out[3] = 0.5 * fRoot; - fRoot = 0.5/fRoot; // 1/(4w) - out[0] = (m[5]-m[7])*fRoot; - out[1] = (m[6]-m[2])*fRoot; - out[2] = (m[1]-m[3])*fRoot; - } else { - // |w| <= 1/2 - var i = 0; - if ( m[4] > m[0] ) - i = 1; - if ( m[8] > m[i*3+i] ) - i = 2; - var j = (i+1)%3; - var k = (i+2)%3; - - fRoot = Math.sqrt(m[i*3+i]-m[j*3+j]-m[k*3+k] + 1.0); - out[i] = 0.5 * fRoot; - fRoot = 0.5 / fRoot; - out[3] = (m[j*3+k] - m[k*3+j]) * fRoot; - out[j] = (m[j*3+i] + m[i*3+j]) * fRoot; - out[k] = (m[k*3+i] + m[i*3+k]) * fRoot; - } - - return out; -}; - -/** - * Returns a string representation of a quatenion - * - * @param {quat} vec vector to represent as a string - * @returns {String} string representation of the vector - */ -quat.str = function (a) { - return 'quat(' + a[0] + ', ' + a[1] + ', ' + a[2] + ', ' + a[3] + ')'; -}; - -if(typeof(exports) !== 'undefined') { - exports.quat = quat; -} -; - - - - - - - - - - - - - - })(shim.exports); -})(this); - -/****************************************************************************** - * Creature Runtimes License - * - * Copyright (c) 2015, Kestrel Moon Studios - * All rights reserved. - * - * Preamble: This Agreement governs the relationship between Licensee and Kestrel Moon Studios(Hereinafter: Licensor). - * This Agreement sets the terms, rights, restrictions and obligations on using [Creature Runtimes] (hereinafter: The Software) created and owned by Licensor, - * as detailed herein: - * License Grant: Licensor hereby grants Licensee a Sublicensable, Non-assignable & non-transferable, Commercial, Royalty free, - * Including the rights to create but not distribute derivative works, Non-exclusive license, all with accordance with the terms set forth and - * other legal restrictions set forth in 3rd party software used while running Software. - * Limited: Licensee may use Software for the purpose of: - * Running Software on Licensee’s Website[s] and Server[s]; - * Allowing 3rd Parties to run Software on Licensee’s Website[s] and Server[s]; - * Publishing Software’s output to Licensee and 3rd Parties; - * Distribute verbatim copies of Software’s output (including compiled binaries); - * Modify Software to suit Licensee’s needs and specifications. - * Binary Restricted: Licensee may sublicense Software as a part of a larger work containing more than Software, - * distributed solely in Object or Binary form under a personal, non-sublicensable, limited license. Such redistribution shall be limited to unlimited codebases. - * Non Assignable & Non-Transferable: Licensee may not assign or transfer his rights and duties under this license. - * Commercial, Royalty Free: Licensee may use Software for any purpose, including paid-services, without any royalties - * Including the Right to Create Derivative Works: Licensee may create derivative works based on Software, - * including amending Software’s source code, modifying it, integrating it into a larger work or removing portions of Software, - * as long as no distribution of the derivative works is made - * - * THE RUNTIMES IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE RUNTIMES OR THE USE OR OTHER DEALINGS IN THE - * RUNTIMES. - *****************************************************************************/ - - -// dualQuat - -var Q_X = 0; -var Q_Y = 1; -var Q_Z = 2; -var Q_W = 3; - -function dualQuat() -{ - this.real = quat.create(); - this.real[Q_W] = 0; - - this.imaginary = quat.create(); - this.imaginary[Q_W] = 0; - - this.tmpQ1 = quat.create(); -}; - -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(q0, t) -{ - this.real = q0; - this.imaginary = quat.create(); - this.imaginary[Q_W] = -0.5 * ( t[Q_X] * q0[Q_X] + t[Q_Y] * q0[Q_Y] + t[Q_Z] * q0[Q_Z]); - this.imaginary[Q_X] = 0.5 * ( t[Q_X] * q0[Q_W] + t[Q_Y] * q0[Q_Z] - t[Q_Z] * q0[Q_Y]); - this.imaginary[Q_Y] = 0.5 * (-t[Q_X] * q0[Q_Z] + t[Q_Y] * q0[Q_W] + t[Q_Z] * q0[Q_X]); - this.imaginary[Q_Z] = 0.5 * ( t[Q_X] * q0[Q_Y] - t[Q_Y] * q0[Q_X] + t[Q_Z] * q0[Q_W]); - -}; - -dualQuat.prototype.add = function(quat_in, real_factor, imaginary_factor) -{ - //real = real.add((quat_in.real.cpy().mul(real_factor))); - //var tmpQ = quat.clone(quat_in.real); - quat.copy(this.tmpQ1, quat_in.real); - - quat.scale(this.tmpQ1, this.tmpQ1, real_factor); - quat.add(this.real, this.tmpQ1, this.real); - - //imaginary = imaginary.add(quat_in.imaginary.cpy().mul(imaginary_factor)); - //tmpQ = quat.clone(quat_in.imaginary); - quat.copy(this.tmpQ1, quat_in.imaginary); - quat.scale(this.tmpQ1, this.tmpQ1, imaginary_factor); - quat.add(this.imaginary, this.tmpQ1, this.imaginary); -}; - -dualQuat.prototype.normalize = function() -{ - var norm = quat.length(this.real); - - this.real = quat.scale(this.real, this.real, 1.0 / norm); - this.imaginary = quat.scale(this.imaginary, this.imaginary, 1.0 / norm); -}; - -var v0 = vec3.create(); -var ve = vec3.create(); -var trans = vec3.create(); -var tmpVec1 = vec3.create(); -var tmpVec2 = vec3.create(); -var tmpVec0 = vec3.create(); -var aVec = vec3.create(); -var rot = vec3.create(); - -dualQuat.prototype.transform = function(p) -{ - 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]; - - //trans = (ve*real.w - v0*imaginary.w + Vector3.Cross(v0, ve)) * 2.0f; - -// var tmpVec1 = v0.cpy().scl((float)imaginary.w); - tmpVec1 = vec3.scale(tmpVec1, v0, this.imaginary[Q_W]); - -// var tmpVec2 = v0.cpy().crs(ve); - tmpVec2 = vec3.cross(tmpVec2, v0, ve); - - //var tmpVec0 = ve.cpy().scl(real.w); - //trans = tmpVec0.sub(tmpVec1).add(tmpVec2); - //trans.scl(2.0f); - - 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.0); - - //var rot = real.transform(p.cpy()); - rot = vec3.transformQuat(rot, p, this.real); - - //return rot.add(trans); - rot = vec3.add(rot, rot, trans); - - return rot; -}; - -// Utils -var Utils = {}; - -Utils.setAxisMatrix = function(xAxis, yAxis, zAxis) -{ - var retMat = mat4.create(); - - var M00 = 0; - var M01 = 4; - var M02 = 8; - var M03 = 12; - var M10 = 1; - var M11 = 5; - var M12 = 9; - var M13 = 13; - var M20 = 2; - var M21 = 6; - var M22 = 10; - var M23 = 14; - var M30 = 3; - var M31 = 7; - var M32 = 11; - var M33 = 15; - - retMat[M00] = xAxis[Q_X]; - retMat[M01] = xAxis[Q_Y]; - retMat[M02] = xAxis[Q_Z]; - retMat[M10] = yAxis[Q_X]; - retMat[M11] = yAxis[Q_Y]; - retMat[M12] = yAxis[Q_Z]; - retMat[M20] = zAxis[Q_X]; - retMat[M21] = zAxis[Q_Y]; - retMat[M22] = zAxis[Q_Z]; - retMat[M03] = 0; - retMat[M13] = 0; - retMat[M23] = 0; - retMat[M30] = 0; - retMat[M31] = 0; - retMat[M32] = 0; - retMat[M33] = 1; - - retMat = mat4.transpose(retMat, retMat); - - return retMat; -}; - -Utils.matrixToQuat = function(mat_in) -{ - var retQuat = quat.create(); - var te = mat_in, - - m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], - m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], - m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ], - - trace = m11 + m22 + m33, - s; - - if ( trace > 0 ) { - - s = 0.5 / Math.sqrt( trace + 1.0 ); - - retQuat[Q_W] = 0.25 / s; - retQuat[Q_X] = ( m32 - m23 ) * s; - retQuat[Q_Y] = ( m13 - m31 ) * s; - retQuat[Q_Z] = ( m21 - m12 ) * s; - - } else if ( m11 > m22 && m11 > m33 ) { - - s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 ); - - retQuat[Q_W] = ( m32 - m23 ) / s; - retQuat[Q_X] = 0.25 * s; - retQuat[Q_Y] = ( m12 + m21 ) / s; - retQuat[Q_Z] = ( m13 + m31 ) / s; - - } else if ( m22 > m33 ) { - - s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 ); - - retQuat[Q_W] = ( m13 - m31 ) / s; - retQuat[Q_X] = ( m12 + m21 ) / s; - retQuat[Q_Y] = 0.25 * s; - retQuat[Q_Z] = ( m23 + m32 ) / s; - - } else { - - s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 ); - - retQuat[Q_W] = ( m21 - m12 ) / s; - retQuat[Q_X] = ( m13 + m31 ) / s; - retQuat[Q_Y] = ( m23 + m32 ) / s; - retQuat[Q_Z] = 0.25 * s; - - } - - return retQuat; -}; - -Utils.rotateVec_90 = function(vec_in) -{ - var ret_vec = vec3.fromValues(-vec_in[Q_Y], vec_in[Q_X], vec_in[Q_Z]); - - return ret_vec; -}; - -Utils.calcRotateMat = function(vec_in) -{ - var dir = vec3.clone(vec_in); - dir = vec3.normalize(dir, dir); - - var pep_dir = Utils.rotateVec_90(dir); - - var cur_tangent = vec3.fromValues(dir[Q_X], dir[Q_Y], 0); - var cur_normal = vec3.fromValues(pep_dir[Q_X], pep_dir[Q_Y], 0); - var cur_binormal = vec3.fromValues(0, 0, 1); - - var cur_rotate = mat4.create(); - cur_rotate = Utils.setAxisMatrix(cur_tangent, cur_normal, cur_binormal); - - return cur_rotate; -}; - -Utils.getMatTranslate = function(mat_in) -{ - var ret_pos = vec3.create(); - ret_pos[Q_X] = mat_in[12]; - ret_pos[Q_Y] = mat_in[13]; - ret_pos[Q_Z] = mat_in[14]; - - return ret_pos; -}; - -Utils.addMat = function(mat1, mat2) -{ - var retMat = mat4.create(); - for(var i = 0; i < 16; i++) - { - retMat[i] = mat1[i] + mat2[i]; - } - - return retMat; -}; - -Utils.mulMat = function(mat_in, factor) -{ - var retMat = mat4.create(); - for(var i = 0; i < 16; i++) - { - retMat[i] = mat_in[i] * factor; - } - - return retMat; -}; - -Utils.clamp = function(num, min, max) { - return num < min ? min : (num > max ? max : num); -}; - - var newVec1 = vec3.create(); - var newVec2 = vec3.create(); - -Utils.vecInterp = function(vec1, vec2, ratio) -{ - newVec1 = vec3.scale(newVec1, vec1, 1.0 - ratio); - newVec2 = vec3.scale(newVec2, vec2, ratio); - - var retVec = vec3.create(); - retVec = vec3.add(retVec, newVec1, newVec2); - - return retVec; -}; - -Utils.vec2Interp = function(vec_1, vec_2, ratio) -{ - var newVec1 = vec2.create(); - var newVec2 = vec2.create(); - - newVec1 = vec2.scale(newVec1, vec_1, 1.0 - ratio); - newVec2 = vec2.scale(newVec2, vec_2, ratio); - - var retVec = vec2.create(); - retVec = vec2.add(retVec, newVec1, newVec2); - - return retVec; -}; - -// MeshBone -function MeshBone(key_in, start_pt_in, end_pt_in, parent_transform) -{ - this.key = key_in; - 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(parent_transform, null); - this.setLocalRestStartPt(start_pt_in); - this.setLocalRestEndPt(end_pt_in); - this.setParentWorldInvMat(mat4.create()); - this.setParentWorldMat(mat4.create()); - - this.local_binormal_dir = vec3.fromValues(0.0,0.0,1.0); - this.tag_id = 0; - - this.children = []; -}; - -MeshBone.prototype.setRestParentMat = function(transform_in, inverse_in) -{ - this.rest_parent_mat = transform_in; - if(inverse_in == null) { - this.rest_parent_inv_mat = mat4.clone(this.rest_parent_mat); - //rest_parent_inv_mat.inv(); - mat4.invert(this.rest_parent_inv_mat, this.rest_parent_inv_mat); - } - else { - this.rest_parent_inv_mat = mat4.clone(inverse_in); - } -}; - -MeshBone.prototype.setParentWorldMat = function(transform_in) -{ - this.parent_world_mat = transform_in; -}; - -MeshBone.prototype.setParentWorldInvMat = function(transform_in) -{ - this.parent_world_inv_mat = transform_in; -}; - -MeshBone.prototype.getLocalRestStartPt = function() -{ - return this.local_rest_start_pt; -}; - -MeshBone.prototype.getLocalRestEndPt = function() -{ - return this.local_rest_end_pt; -}; - -MeshBone.prototype.setLocalRestStartPt = function(world_pt_in) -{ - //local_rest_start_pt = Vector3.Transform(world_pt_in, rest_parent_inv_mat); - //this.local_rest_start_pt = world_pt_in.cpy().traMul(rest_parent_inv_mat); - this.local_rest_start_pt = vec3.create(); - this.local_rest_start_pt = vec3.transformMat4(this.local_rest_start_pt, world_pt_in, this.rest_parent_inv_mat); - this.calcRestData(); -}; - -MeshBone.prototype.setLocalRestEndPt = function(world_pt_in) -{ - //local_rest_end_pt = Vector3.Transform(world_pt_in, rest_parent_inv_mat); - //this.local_rest_end_pt = world_pt_in.cpy().traMul(rest_parent_inv_mat); - this.local_rest_end_pt = vec3.create(); - this.local_rest_end_pt = vec3.transformMat4(this.local_rest_end_pt, world_pt_in, this.rest_parent_inv_mat); - this.calcRestData(); -}; - -MeshBone.prototype.calcRestData = function() -{ - if(this.local_rest_start_pt == null || this.local_rest_end_pt == null) - { - return; - } - - var calc = this.computeDirs(this.local_rest_start_pt, this.local_rest_end_pt); - - this.local_rest_dir = calc.first; - this.local_rest_normal_dir = calc.second; - - this.computeRestLength(); -}; - -MeshBone.prototype.setWorldStartPt = function(world_pt_in) -{ - this.world_start_pt = world_pt_in; -}; - -MeshBone.prototype.setWorldEndPt = function(world_pt_in) -{ - this.world_end_pt = world_pt_in; -}; - -MeshBone.prototype.fixDQs = function(ref_dq) -{ - // if( Quaternion.Dot(world_dq.real, ref_dq.real) < 0) { - //if( world_dq.real.dot(ref_dq.real) < 0) { - if(quat.dot(this.world_dq.real, ref_dq.real) < 0) { - //this.world_dq.real = world_dq.real.cpy().mul(-1); - this.world_dq.real = quat.scale(this.world_dq.real, this.world_dq.real, -1); - //this.world_dq.imaginary = world_dq.imaginary.cpy().mul(-1); - this.world_dq.imaginary = quat.scale(this.world_dq.imaginary, this.world_dq.imaginary, -1); - } - - for(var i = 0; i < this.children.length; i++) { - var cur_child = this.children[i]; - cur_child.fixDQs(this.world_dq); - } -}; - -MeshBone.prototype.initWorldPts = function() -{ - this.setWorldStartPt(this.getWorldRestStartPt()); - this.setWorldEndPt(this.getWorldRestEndPt()); - - for(var i = 0; i < this.children.length; i++) { - this.children[i].initWorldPts(); - } -}; - -MeshBone.prototype.getWorldRestStartPt = function() -{ - //Vector3 ret_vec = Vector3.Transform(local_rest_start_pt, rest_parent_mat); - var tmp_mat = this.rest_parent_mat; - var ret_vec = vec3.create(); - ret_vec = vec3.transformMat4(ret_vec, this.local_rest_start_pt, tmp_mat); - - return ret_vec; -}; - -MeshBone.prototype.getWorldRestEndPt = function() -{ - // Vector3 ret_vec = Vector3.Transform(local_rest_end_pt, rest_parent_mat); - var tmp_mat = this.rest_parent_mat; - var ret_vec = vec3.create(); - ret_vec = vec3.transformMat4(ret_vec, this.local_rest_end_pt, tmp_mat); - - return ret_vec; -}; - -MeshBone.prototype.getWorldRestAngle = function() -{ - return this.world_rest_angle; -}; - -MeshBone.prototype.getWorldRestPos = function() -{ - return this.world_rest_pos; -}; - -MeshBone.prototype.getWorldStartPt = function() -{ - return this.world_start_pt; -}; - -MeshBone.prototype.getWorldEndPt = function() -{ - return this.world_end_pt; -}; - -MeshBone.prototype.getRestParentMat = function() -{ - return this.rest_parent_mat; -}; - -MeshBone.prototype.getRestWorldMat = function() -{ - return this.rest_world_mat; -}; - -MeshBone.prototype.getWorldDeltaMat = function() -{ - return this.world_delta_mat; -}; - -MeshBone.prototype.getParentWorldMat = function() -{ - return this.parent_world_mat; -}; - -MeshBone.prototype.getParentWorldInvMat = function() -{ - return this.parent_world_inv_mat; -}; - -MeshBone.prototype.getWorldDq = function() -{ - return this.world_dq; -}; - -MeshBone.prototype.computeRestParentTransforms = function() -{ - var cur_tangent = vec3.fromValues(this.local_rest_dir[Q_X], this.local_rest_dir[Q_Y], 0); - var cur_binormal = vec3.fromValues(this.local_binormal_dir[Q_X], this.local_binormal_dir[Q_Y], this.local_binormal_dir[Q_Z]); - var cur_normal = vec3.fromValues(this.local_rest_normal_dir[Q_X], this.local_rest_normal_dir[Q_Y], 0); - - var cur_translate = mat4.create(); - //cur_translate.setTranslation(local_rest_end_pt.x, local_rest_end_pt.y, 0); - mat4.translate(cur_translate, cur_translate, this.local_rest_end_pt); - - var cur_rotate = mat4.create(); - /* - cur_rotate.Right = cur_tangent; - cur_rotate.Up = cur_normal; - cur_rotate.Backward = cur_binormal; - */ - //cur_rotate.set(cur_tangent, cur_normal, cur_binormal, new Vector3(0,0,0)); - cur_rotate = Utils.setAxisMatrix(cur_tangent, cur_normal, cur_binormal); - //cur_rotate.tra(); - - //Matrix4 cur_final = cur_translate.cpy().mul(cur_rotate); - var cur_final = mat4.create(); - cur_final = mat4.multiply(cur_final, cur_translate, cur_rotate); - - //rest_world_mat = rest_parent_mat.cpy().mul(cur_final); - this.rest_world_mat = mat4.create(); - this.rest_world_mat = mat4.multiply(this.rest_world_mat, this.rest_parent_mat, cur_final); - - this.rest_world_inv_mat = mat4.clone(this.rest_world_mat); - this.rest_world_inv_mat = mat4.invert(this.rest_world_inv_mat, this.rest_world_inv_mat); - //Matrix4.Invert(ref rest_world_mat, out rest_world_inv_mat); - -// var world_rest_dir = getWorldRestEndPt().cpy().sub( getWorldRestStartPt()); - var world_rest_dir = vec3.clone(this.getWorldRestEndPt()); - world_rest_dir = vec3.subtract(world_rest_dir, world_rest_dir, this.getWorldRestStartPt()); - - world_rest_dir = vec3.normalize(world_rest_dir, world_rest_dir); - this.world_rest_pos = this.getWorldRestStartPt(); - - - var bind_translate = mat4.create(); - //bind_translate.setTranslation(getWorldRestStartPt().x, getWorldRestStartPt().y, 0); - bind_translate = mat4.translate(bind_translate, bind_translate, this.getWorldRestStartPt()); - - var tVec = vec3.create(); - tVec = vec3.sub(tVec, this.getWorldRestEndPt(), this.getWorldRestStartPt()); - var bind_rotate = Utils.calcRotateMat(tVec); - //Matrix4 cur_bind_final = bind_translate.cpy().mul(bind_rotate); - var cur_bind_final = mat4.create(); - cur_bind_final = mat4.multiply(cur_bind_final, bind_translate, bind_rotate); - - this.bind_world_mat = mat4.clone(cur_bind_final); - this.bind_world_inv_mat = mat4.clone(this.bind_world_mat); - this.bind_world_inv_mat = mat4.invert(this.bind_world_inv_mat, this.bind_world_inv_mat); - //Matrix4.Invert(ref bind_world_mat, out bind_world_inv_mat); - - for(var i = 0; i < this.children.length; i++) { - var cur_bone = this.children[i]; - cur_bone.setRestParentMat(this.rest_world_mat, this.rest_world_inv_mat); - cur_bone.computeRestParentTransforms(); - } -}; - -MeshBone.prototype.computeParentTransforms = function() -{ - var translate_parent = mat4.create(); - translate_parent = mat4.translate(translate_parent, translate_parent, this.getWorldEndPt()); - - var tVec = vec3.create(); - tVec = vec3.subtract(tVec, this.getWorldEndpt(), this.getWorldStartPt()); - var rotate_parent = Utils.calcRotateMat(tVec); - - var final_transform = mat4.create(); - final_transform = mat4.multiply(final_transform, translate_parent, rotate_parent); - - var final_inv_transform = mat4.clone(final_transform); - //final_inv_transform.inv(); - final_inv_transform = mat4.invert(final_inv_transform, final_inv_transform); - - for(var i = 0; i < children.length; i++) { - var cur_bone = children[i]; - cur_bone.setParentWorldMat(final_transform); - cur_bone.setParentWorldInvMat(final_inv_transform); - cur_bone.computeParentTransforms(); - } -}; - -MeshBone.prototype.computeWorldDeltaTransforms = function() -{ - var calc = this.computeDirs(this.world_start_pt, this.world_end_pt); - var cur_tangent = vec3.fromValues(calc["first"][Q_X], calc["first"][Q_Y], 0); - var cur_normal = vec3.fromValues(calc["second"][Q_X], calc["second"][Q_Y], 0); - var cur_binormal = vec3.fromValues(this.local_binormal_dir[Q_X], this.local_binormal_dir[Q_Y], this.local_binormal_dir[Q_Z]); - - var cur_rotate = mat4.create(); - /* - cur_rotate.Right = cur_tangent; - cur_rotate.Up = cur_normal; - cur_rotate.Backward = cur_binormal; - */ - //cur_rotate.set(cur_tangent, cur_normal, cur_binormal, new Vector3(0,0,0)); - cur_rotate = Utils.setAxisMatrix(cur_tangent, cur_normal, cur_binormal); - - //cur_rotate.tra(); - - var cur_translate = mat4.create(); - //cur_translate.setTranslation(world_start_pt.x, world_start_pt.y, 0); - cur_translate = mat4.translate(cur_translate, cur_translate, this.world_start_pt); - - /* - world_delta_mat = (cur_translate * cur_rotate) - * bind_world_inv_mat; - */ - - this.world_delta_mat = mat4.create(); -// world_delta_mat = (cur_translate.cpy().mul(cur_rotate)).mul(bind_world_inv_mat); - this.world_delta_mat = mat4.multiply(this.world_delta_mat, cur_translate, cur_rotate); - this.world_delta_mat = mat4.multiply(this.world_delta_mat, this.world_delta_mat, this.bind_world_inv_mat); - - - // Quaternion cur_quat = XnaGeometry.Quaternion.CreateFromRotationMatrix(world_delta_mat); - //var tmpMat = mat3.create(); - //tmpMat = mat3.fromMat4(tmpMat, this.world_delta_mat); - var cur_quat = Utils.matrixToQuat(this.world_delta_mat); - - - var tmp_pos = Utils.getMatTranslate(this.world_delta_mat); - this.world_dq = new dualQuat(); - this.world_dq.createFromData(cur_quat, tmp_pos); - - for(var i = 0; i < this.children.length; i++) { - var cur_bone = this.children[i]; - cur_bone.computeWorldDeltaTransforms(); - } -}; - -MeshBone.prototype.addChild = function(bone_in) -{ - bone_in.setRestParentMat(this.rest_world_mat, this.rest_world_inv_mat); - this.children.push(bone_in); -}; - -MeshBone.prototype.getChildren = function() -{ - return this.children; -}; - -MeshBone.prototype.hasBone = function(bone_in) -{ - for(var i = 0; i < this.children.length; i++) { - var cur_bone = this.children[i]; - if(cur_bone == bone_in) { - return true; - } - } - - return false; -}; - -MeshBone.prototype.getChildByKey = function(search_key) -{ - if(this.key === search_key) { - return this; - } - - var ret_data = null; - for(var i = 0; i < this.children.length; i++) { - var cur_bone = this.children[i]; - - var result = cur_bone.getChildByKey(search_key); - if(result != null) { - ret_data = result; - break; - } - } - - return ret_data; -}; - -MeshBone.prototype.getKey = function() -{ - return this.key; -}; - -MeshBone.prototype.getAllBoneKeys = function() -{ - var ret_data = []; - ret_data.push(this.getKey()); - - for(var i = 0; i < this.children.length; i++) { - var append_data = this.children[i].getAllBoneKeys(); - ret_data = ret_data.concat(append_data); - } - - return ret_data; -}; - -MeshBone.prototype.getAllChildren = function() -{ - var ret_data = []; - ret_data.push(this); - for(var i = 0; i < this.children.length; i++) { - var append_data = this.children[i].getAllChildren(); - ret_data = ret_data.concat(append_data); - } - - return ret_data; -}; - -MeshBone.prototype.getBoneDepth = function(bone_in, depth) -{ - if(bone_in == this) { - return depth; - } - - for(var i = 0; i < this.children.length; i++) { - var cur_bone = this.children[i]; - var ret_val = cur_bone.getBoneDepth(bone_in, depth + 1); - if(ret_val != -1) { - return ret_val; - } - } - - return -1; -}; - -MeshBone.prototype.isLeaf = function() -{ - return this.children.length == 0; -}; - -MeshBone.prototype.deleteChildren = function() -{ - for(var i = 0; i < this.children.length; i++) { - var cur_bone = this.children[i]; - cur_bone.deleteChildren(); - } - - this.children = []; -}; - -MeshBone.prototype.setTagId = function(value_in) -{ - this.tag_id = value_in; -}; - -MeshBone.prototype.getTagId = function() -{ - return this.tag_id; -}; - -MeshBone.prototype.computeDirs = function(start_pt, end_pt) -{ - var tangent = vec3.create(); - tangent = vec3.subtract(tangent, end_pt, start_pt); - tangent = vec3.normalize(tangent, tangent); - - var normal = Utils.rotateVec_90(tangent); - - var retData = {}; - retData["first"] = tangent; - retData["second"] = normal; - - return retData; -}; - -MeshBone.prototype.computeRestLength = function() -{ - var tmp_dir = vec3.create(); - //Vector3 tmp_dir = local_rest_end_pt.cpy().sub(local_rest_start_pt); - tmp_dir = vec3.subtract(tmp_dir, this.local_rest_end_pt, this.local_rest_start_pt); - - this.rest_length = vec3.length(tmp_dir); -}; - -// MeshRenderRegion -function MeshRenderRegion(indices_in, rest_pts_in, uvs_in, start_pt_index_in, end_pt_index_in, - start_index_in, end_index_in) -{ - this.store_indices = indices_in; - this.store_rest_pts = rest_pts_in; - this.store_uvs = uvs_in; - - this.use_local_displacements = false; - this.use_post_displacements = false; - this.use_uv_warp = false; - 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 = start_pt_index_in; - this.end_pt_index = end_pt_index_in; - this.start_index = start_index_in; - this.end_index = end_index_in; - 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 = true; - this.tag_id = -1; - - this.initUvWarp(); -}; - -MeshRenderRegion.prototype.getIndicesIndex = function() -{ - // return store_indices + (start_index); - return this.start_index; -}; - -MeshRenderRegion.prototype.getRestPtsIndex = function() -{ - // return store_rest_pts + (3 * start_pt_index); - return 3 * this.start_pt_index; -}; - -MeshRenderRegion.prototype.getUVsIndex = function() -{ - // return store_uvs + (2 * start_pt_index); - return 2 * this.start_pt_index; -}; - -MeshRenderRegion.prototype.getNumPts = function() -{ - return this.end_pt_index - this.start_pt_index + 1; -}; - -MeshRenderRegion.prototype.getStartPtIndex = function() -{ - return this.start_pt_index; -}; - -MeshRenderRegion.prototype.getEndPtIndex = function() -{ - return this.end_pt_index; -}; - -MeshRenderRegion.prototype.getNumIndices = function() -{ - return this.end_index - this.start_index + 1; -}; - -MeshRenderRegion.prototype.getStartIndex = function() -{ - return this.start_index; -}; - -MeshRenderRegion.prototype.getEndIndex = function() -{ - return this.end_index; -}; - -var accum_dq = new dualQuat(); -var accum_mat = mat4.create(); -var final_pt = vec3.create(); -var tmp1 = vec3.create(); -var tmp2 = vec3.create(); - -MeshRenderRegion.prototype.poseFinalPts = function(output_pts, output_start_index, bones_map) -{ - var read_pt_index = this.getRestPtsIndex(); - var write_pt_index = output_start_index; - - // point posing - for(var i = 0; i < 16; i++) - { - accum_mat[i] = 0.0; - } - - var boneKeys = Object.keys(bones_map); - var boneKeyLength = boneKeys.length; - - for(var i = 0, l = this.getNumPts(); i < l; i++) { - var cur_rest_pt = - vec3.set(tmp1, this.store_rest_pts[0 + read_pt_index], - this.store_rest_pts[1 + read_pt_index], - this.store_rest_pts[2 + read_pt_index]); - // vec3.fromValues(this.store_rest_pts[0 + read_pt_index], - // this.store_rest_pts[1 + read_pt_index], - // this.store_rest_pts[2 + read_pt_index]); - - if(this.use_local_displacements == true) { - cur_rest_pt[Q_X] += this.local_displacements[i][Q_X]; - cur_rest_pt[Q_Y] += this.local_displacements[i][Q_Y]; - } - - for(var j = 0; j < 16; j++) - { - accum_mat[j] = 0.0; - } - // reuse - // var accum_dq = new dualQuat(); - accum_dq.reset(); - - var curBoneIndices = this.relevant_bones_indices[i]; - var relevantIndicesLength = curBoneIndices.length; - for (var j = 0; j < relevantIndicesLength; j++) - { - var idx_lookup = curBoneIndices[j]; - var cur_bone = this.fast_bones_map[idx_lookup]; - var cur_weight_val = this.fast_normal_weight_map[idx_lookup][i]; - var cur_im_weight_val = cur_weight_val; - - var world_dq = cur_bone.getWorldDq(); - accum_dq.add(world_dq, cur_weight_val, cur_im_weight_val); - } - - accum_dq.normalize(); - var tmp_pt = vec3.set(tmp2, cur_rest_pt[Q_X], cur_rest_pt[Q_Y], cur_rest_pt[Q_Z]); - // var tmp_pt = vec3.fromValues(cur_rest_pt[Q_X], cur_rest_pt[Q_Y], cur_rest_pt[Q_Z]); - final_pt = accum_dq.transform(tmp_pt); - - // debug start - - // debug end - - if(this.use_post_displacements == true) { - final_pt[Q_X] += this.post_displacements[i][Q_X]; - final_pt[Q_Y] += this.post_displacements[i][Q_Y]; - } - - output_pts[0 + write_pt_index] = final_pt[Q_X]; - output_pts[1 + write_pt_index] = final_pt[Q_Y]; - output_pts[2 + write_pt_index] = final_pt[Q_Z]; - - - - read_pt_index += 3; - write_pt_index += 3; - } - - // uv warping - if(this.use_uv_warp == true) { - this.runUvWarp(); - } -}; - -MeshRenderRegion.prototype.setMainBoneKey = function(key_in) -{ - this.main_bone_key = key_in; -}; - -MeshRenderRegion.prototype.determineMainBone = function(root_bone_in) -{ - this.main_bone = root_bone_in.getChildByKey(this.main_bone_key); -}; - -MeshRenderRegion.prototype.setUseDq = function(flag_in) -{ - this.use_dq = flag_in; -}; - -MeshRenderRegion.prototype.setName = function(name_in) -{ - this.name = name_in; -}; - -MeshRenderRegion.prototype.getName = function() -{ - return this.name; -}; - -MeshRenderRegion.prototype.setUseLocalDisplacements = function(flag_in) -{ - this.use_local_displacements = flag_in; - if((this.local_displacements.length != this.getNumPts()) - && this.use_local_displacements) - { - this.local_displacements = []; - for(var i = 0; i < this.getNumPts(); i++) { - this.local_displacements.push (vec2.create()); - } - } -}; - -MeshRenderRegion.prototype. getUseLocalDisplacements = function() -{ - return this.use_local_displacements; -}; - -MeshRenderRegion.prototype.setUsePostDisplacements = function(flag_in) -{ - this.use_post_displacements = flag_in; - if((this.post_displacements.length != this.getNumPts()) - && this.use_post_displacements) - { - this.post_displacements = []; - for(var i = 0; i < this.getNumPts(); i++) { - this.post_displacements.push(vec2.create()); - } - } -}; - -MeshRenderRegion.prototype.getUsePostDisplacements = function() -{ - return this.use_post_displacements; -}; - -MeshRenderRegion.prototype.getRestLocalPt = function(index_in) -{ - var read_pt_index = this.getRestPtsIndex() + (3 * index_in); - var return_pt = vec2.fromValues(this.store_rest_pts[0 + read_pt_index], - this.store_rest_pts[1 + read_pt_index]); - return return_pt; -}; - -MeshRenderRegion.prototype.getLocalIndex = function(index_in) -{ - var read_index = this.getIndicesIndex() + index_in; - return this.store_indices[read_index]; -}; - -MeshRenderRegion.prototype.clearLocalDisplacements = function() -{ - for(var i = 0; i < this.local_displacements.length; i++) { - this.local_displacements[i] = vec2.create(); - } -}; - -MeshRenderRegion.prototype.clearPostDisplacements = function() -{ - for(var i = 0; i < this.post_displacements.length; i++) { - this.post_displacements[i] = vec2.create(); - } -}; - -MeshRenderRegion.prototype.setUseUvWarp = function(flag_in) -{ - this.use_uv_warp = flag_in; - if(this.use_uv_warp == false) { - this.restoreRefUv(); - } -}; - -MeshRenderRegion.prototype. getUseUvWarp = function() -{ - return this.use_uv_warp; -}; - -MeshRenderRegion.prototype.setUvWarpLocalOffset = function(vec_in) -{ - this.uv_warp_local_offset = vec_in; -}; - -MeshRenderRegion.prototype.setUvWarpGlobalOffset = function(vec_in) -{ - this.uv_warp_global_offset = vec_in; -}; - -MeshRenderRegion.prototype.setUvWarpScale = function(vec_in) -{ - this.uv_warp_scale = vec_in; -}; - -MeshRenderRegion.prototype. getUvWarpLocalOffset = function() -{ - return this.uv_warp_local_offset; -}; - -MeshRenderRegion.prototype. getUvWarpGlobalOffset = function() -{ - return this.uv_warp_global_offset; -}; - -MeshRenderRegion.prototype. getUvWarpScale = function() -{ - return this.uv_warp_scale; -}; - -MeshRenderRegion.prototype.runUvWarp = function() -{ - var cur_uvs_index = this.getUVsIndex(); - for(var i = 0; i < this.uv_warp_ref_uvs.length; i++) { - var set_uv = vec2.clone(this.uv_warp_ref_uvs[i]); - - - set_uv = vec2.subtract(set_uv, set_uv, this.uv_warp_local_offset); - set_uv[Q_X] *= this.uv_warp_scale[Q_X]; - set_uv[Q_Y] *= this.uv_warp_scale[Q_Y]; - set_uv = vec2.add(set_uv, set_uv, this.uv_warp_global_offset); - - - /* - set_uv.sub(uv_warp_local_offset); - set_uv.scl(uv_warp_scale); - set_uv.add(uv_warp_global_offset); - */ - - - this.store_uvs[0 + cur_uvs_index] = set_uv[Q_X]; - this.store_uvs[1 + cur_uvs_index] = set_uv[Q_Y]; - - - cur_uvs_index += 2; - } -}; - -MeshRenderRegion.prototype.restoreRefUv = function() -{ - var cur_uvs_index = this.getUVsIndex(); - for(var i = 0; i < this.uv_warp_ref_uvs.length; i++) { - var set_uv = this.uv_warp_ref_uvs[i]; - - this.store_uvs[0 + cur_uvs_index] = set_uv[Q_X]; - this.store_uvs[1 + cur_uvs_index] = set_uv[Q_Y]; - - cur_uvs_index += 2; - } -}; - -MeshRenderRegion.prototype.getTagId = function() -{ - return this.tag_id; -}; - -MeshRenderRegion.prototype.setTagId = function(value_in) -{ - this.tag_id = value_in; -}; - -MeshRenderRegion.prototype.initFastNormalWeightMap = function(bones_map) -{ - this.relevant_bones_indices = []; - - // fast normal weight map lookup, avoids hash lookups - for (var cur_key in bones_map) { - var values = this.normal_weight_map[cur_key]; - this.fast_normal_weight_map.push(values); - } - - // relevant bone indices - var cutoff_val = 0.05; - for(var i = 0; i < this.getNumPts(); i++) { - var curIndicesArray = []; - for (var j = 0; j < this.fast_normal_weight_map.length; j++) - { - var cur_val = this.fast_normal_weight_map[j][i]; - if(cur_val > cutoff_val) - { - curIndicesArray.push(j); - } - } - - this.relevant_bones_indices.push(curIndicesArray); - } - - // fast bone map lookup - for (var cur_key in bones_map) { - var cur_bone = bones_map[cur_key]; - this.fast_bones_map.push(cur_bone); - } -}; - -MeshRenderRegion.prototype.initUvWarp = function() -{ - var cur_uvs_index = this.getUVsIndex(); - // uv_warp_ref_uvs = new java.util.Vector(new Vector2[getNumPts()]); - this.uv_warp_ref_uvs = [];; - - for(var i = 0; i < this.getNumPts(); i++) { - this.uv_warp_ref_uvs.push(vec2.create()); - - this.uv_warp_ref_uvs[i] = vec2.fromValues(this.store_uvs[cur_uvs_index], - this.store_uvs[cur_uvs_index + 1]); - - - - cur_uvs_index += 2; - } -}; - - -// MeshRenderBoneComposition -function MeshRenderBoneComposition() -{ - this.root_bone = null; - this.bones_map = {}; - this.regions = []; - this.regions_map = {}; -}; - -MeshRenderBoneComposition.prototype.addRegion = function(region_in) -{ - this.regions.push(region_in); -}; - -MeshRenderBoneComposition.prototype.setRootBone = function(root_bone_in) -{ - this.root_bone = root_bone_in; -}; - -MeshRenderBoneComposition.prototype.getRootBone = function() -{ - return this.root_bone; -}; - -MeshRenderBoneComposition.prototype.initBoneMap = function() -{ - this.bones_map = MeshRenderBoneComposition.genBoneMap(this.root_bone); -}; - -MeshRenderBoneComposition.prototype.initRegionsMap = function() -{ - this.regions_map = {}; - for(var i = 0; i < this.regions.length; i++) { - cur_key = this.regions[i].getName(); - this.regions_map[cur_key] = this.regions[i]; - } -}; - -MeshRenderBoneComposition.genBoneMap = function(input_bone) -{ - var ret_map = {}; - var all_keys = input_bone.getAllBoneKeys(); - for(var i = 0; i < all_keys.length; i++) { - var cur_key = all_keys[i]; - ret_map[cur_key] = input_bone.getChildByKey(cur_key); - } - - return ret_map; -}; - -MeshRenderBoneComposition.prototype.getBonesMap = function() -{ - return this.bones_map; -}; - -MeshRenderBoneComposition.prototype.getRegionsMap = function() -{ - return this.regions_map; -}; - -MeshRenderBoneComposition.prototype.getRegions = function() -{ - return this.regions; -}; - -MeshRenderBoneComposition.prototype.getRegionWithId = function(id_in) -{ - for(var i = 0; i < this.regions.length; i++) { - var cur_region = this.regions[i]; - if(cur_region.getTagId() == id_in) { - return cur_region; - } - } - - return null; -}; - -MeshRenderBoneComposition.prototype.resetToWorldRestPts = function() -{ - this.getRootBone().initWorldPts(); -}; - -MeshRenderBoneComposition.prototype.updateAllTransforms = function(update_parent_xf) -{ - if(update_parent_xf) { - this.getRootBone().computeParentTransforms(); - } - - this.getRootBone().computeWorldDeltaTransforms(); - this.getRootBone().fixDQs(this.getRootBone().getWorldDq()); -}; - -// MeshBoneCache -function MeshBoneCache(key_in) -{ - this.key = key_in; -}; - -MeshBoneCache.prototype.setWorldStartPt = function(pt_in) { - this.world_start_pt = pt_in; -}; - -MeshBoneCache.prototype.setWorldEndPt = function(pt_in) { - this.world_end_pt = pt_in; -}; - -MeshBoneCache.prototype.getWorldStartPt = function() { - return this.world_start_pt; -}; - -MeshBoneCache.prototype.getWorldEndPt = function() { - return this.world_end_pt; -}; - -MeshBoneCache.prototype.getKey = function() { - return this.key; -}; - -// MeshDisplacementCache -function MeshDisplacementCache(key_in) -{ - this.key = key_in; - this.local_displacements = []; - this.post_displacements = []; -}; - -MeshDisplacementCache.prototype.setLocalDisplacements = function(displacements_in) -{ - this.local_displacements = displacements_in; -}; - -MeshDisplacementCache.prototype.setPostDisplacements = function(displacements_in) -{ - this.post_displacements = displacements_in; -}; - -MeshDisplacementCache.prototype.getKey = function() { - return this.key; -}; - -MeshDisplacementCache.prototype.getLocalDisplacements = function() -{ - return this.local_displacements; -}; - -MeshDisplacementCache.prototype.getPostDisplacements = function() -{ - return this.post_displacements; -}; - - -// MeshUVWarpCache -function MeshUVWarpCache(key_in) -{ - this.uv_warp_global_offset = vec2.create(); - this.uv_warp_local_offset = vec2.create(); - this.uv_warp_scale = vec2.fromValues(-1,-1); - this.key = key_in; - this.enabled = false; -}; - -MeshUVWarpCache.prototype.setUvWarpLocalOffset = function(vec_in) -{ - this.uv_warp_local_offset = vec_in; -}; - -MeshUVWarpCache.prototype.setUvWarpGlobalOffset = function(vec_in) -{ - this.uv_warp_global_offset = vec_in; -}; - -MeshUVWarpCache.prototype.setUvWarpScale = function(vec_in) -{ - this.uv_warp_scale = vec_in; -}; - -MeshUVWarpCache.prototype.getUvWarpLocalOffset = function() -{ - return this.uv_warp_local_offset; -}; - -MeshUVWarpCache.prototype.getUvWarpGlobalOffset = function() -{ - return this.uv_warp_global_offset; -}; - -MeshUVWarpCache.prototype.getUvWarpScale = function() -{ - return this.uv_warp_scale; -}; - -MeshUVWarpCache.prototype.getKey = function() { - return this.key; -}; - -MeshUVWarpCache.prototype.setEnabled = function(flag_in) -{ - this.enabled = flag_in; -}; - -MeshUVWarpCache.prototype.getEnabled = function() { - return this.enabled; -}; - -// MeshBoneCacheManager -function MeshBoneCacheManager() -{ - this.is_ready = false; - this.bone_cache_table = null; - this.bone_cache_data_ready = null; - this.bone_cache_table = []; - this.bone_cache_data_ready = []; -}; - -MeshBoneCacheManager.prototype.init = function(start_time_in, end_time_in) -{ - this.start_time = start_time_in; - this.end_time = end_time_in; - - var num_frames = this.end_time - this.start_time + 1; - this.bone_cache_table = []; - - this.bone_cache_data_ready = []; - for(var i = 0; i < num_frames; i++) { - this.bone_cache_table.push([]); - this.bone_cache_data_ready.push(false); - } - - this.is_ready = false; -}; - -MeshBoneCacheManager.prototype.getStartTime = function() -{ - return this.start_time; -}; - -MeshBoneCacheManager.prototype.getEndime = function() -{ - return this.end_time; -}; - -MeshBoneCacheManager.prototype.getIndexByTime = function(time_in) -{ - var retval = time_in - this.start_time; - retval = Utils.clamp(retval, 0, (this.bone_cache_table.length) - 1); - - return retval; -}; - -MeshBoneCacheManager.prototype.retrieveValuesAtTime = function(time_in, bone_map) -{ - var base_time = this.getIndexByTime(Math.floor(time_in)); - var end_time = this.getIndexByTime(Math.ceil(time_in)); - - var ratio = (time_in - Math.floor(time_in)); - - if(this.bone_cache_data_ready.length == 0) { - return; - } - - if((this.bone_cache_data_ready[base_time] == false) - || ((this.bone_cache_data_ready[end_time] == false))) - { - return; - } - - var base_cache = this.bone_cache_table[base_time]; - var end_cache = this.bone_cache_table[end_time]; - - for(var i = 0, l = base_cache.length; i < l; i++) { - var base_data = base_cache[i]; - var end_data = end_cache[i]; - var cur_key = base_data.getKey(); - - var final_world_start_pt = Utils.vecInterp(base_data.getWorldStartPt(), end_data.getWorldStartPt(), ratio); - - var final_world_end_pt = Utils.vecInterp(base_data.getWorldEndPt(), end_data.getWorldEndPt(), ratio); - - /* - Vector3 final_world_start_pt = ((1.0f - ratio) * base_data.getWorldStartPt()) + - (ratio * end_data.getWorldStartPt()); - - Vector3 final_world_end_pt = ((1.0f - ratio) * base_data.getWorldEndPt()) + - (ratio * end_data.getWorldEndPt()); - */ - - bone_map[cur_key].setWorldStartPt(final_world_start_pt); - bone_map[cur_key].setWorldEndPt(final_world_end_pt); - } -}; - -MeshBoneCacheManager.prototype.allReady = function() -{ - if(this.is_ready) { - return true; - } - else { - var num_frames = this.end_time - this.start_time + 1; - var ready_cnt = 0; - for(var i = 0; i < this.bone_cache_data_ready.size(); i++) { - if(this.bone_cache_data_ready[i]) { - ready_cnt++; - } - } - - if(ready_cnt == num_frames) { - this.is_ready = true; - } - } - - return this.is_ready; -}; - -MeshBoneCacheManager.prototype.makeAllReady = function() -{ - for(var i = 0; i < this.bone_cache_data_ready.length; i++) { - this.bone_cache_data_ready[i] = true; - } -}; - -// MeshDisplacementCacheManager -function MeshDisplacementCacheManager() -{ - this.is_ready = false; - this.displacement_cache_table = null; - this.displacement_cache_data_ready = null; - this.displacement_cache_table = []; - this.displacement_cache_data_ready = []; -}; - -MeshDisplacementCacheManager.prototype.init = function(start_time_in, end_time_in) -{ - this.start_time = start_time_in; - this.end_time = end_time_in; - - var num_frames = this.end_time - this.start_time + 1; - this.displacement_cache_table = []; - - this.displacement_cache_data_ready = []; - for(var i = 0; i < num_frames; i++) { - this.displacement_cache_table.push([]); - this.displacement_cache_data_ready.push(false); - } - - this.is_ready = false; -}; - -MeshDisplacementCacheManager.prototype.getStartTime = function() -{ - return this.start_time; -}; - -MeshDisplacementCacheManager.prototype.getEndime = function() -{ - return this.end_time; -}; - -MeshDisplacementCacheManager.prototype.getIndexByTime = function(time_in) -{ - var retval = time_in - this.start_time; - retval = Utils.clamp(retval, 0, (this.displacement_cache_table.length) - 1); - - return retval; -}; - -MeshDisplacementCacheManager.prototype.retrieveValuesAtTime = function(time_in, regions_map) -{ - var base_time = this.getIndexByTime(Math.floor(time_in)); - var end_time = this.getIndexByTime(Math.ceil(time_in)); - - var ratio = (time_in - Math.floor(time_in)); - - if(this.displacement_cache_data_ready.length == 0) { - return; - } - - if((this.displacement_cache_data_ready[base_time] == false) - || (this.displacement_cache_data_ready[end_time] == false)) - { - return; - } - - var base_cache = this.displacement_cache_table[base_time]; - var end_cache = this.displacement_cache_table[end_time]; - - for(var i = 0; i < base_cache.length; i++) { - var base_data = base_cache[i]; - var end_data = end_cache[i]; - var cur_key = base_data.getKey(); - - var set_region = regions_map[cur_key]; - - if(set_region.getUseLocalDisplacements()) { - var displacements = - set_region.local_displacements; - if((base_data.getLocalDisplacements().length == displacements.length) - && (end_data.getLocalDisplacements().length == displacements.length)) - { - for(var j = 0; j < displacements.length; j++) { - var interp_val = Utils.vec2Interp(base_data.getLocalDisplacements()[j], - end_data.getLocalDisplacements()[j], - ratio); - - /* - Vector2 interp_val = - ((1.0f - ratio) * base_data.getLocalDisplacements().get(j)) + - (ratio * end_data.getLocalDisplacements().get(j)); - */ - - displacements[j] = interp_val; - } - } - else { - for(var j = 0; j < displacements.length; j++) { - displacements[j] = vec2.create(); - } - } - } - - if(set_region.getUsePostDisplacements()) { - var displacements = - set_region.post_displacements; - if((base_data.getPostDisplacements().length == displacements.length) - && (end_data.getPostDisplacements().length == displacements.length)) - { - - for(var j = 0; j < displacements.length; j++) { - var interp_val = Utils.vec2Interp(base_data.getPostDisplacements()[j], - end_data.getPostDisplacements()[j], - ratio); - - /* - Vector2 interp_val = - ((1.0f - ratio) * base_data.getPostDisplacements()[j]) + - (ratio * end_data.getPostDisplacements()[j]); - */ - displacements[j] = interp_val; - } - } - else { - for(var j = 0; j < displacements.length; j++) { - displacements.set[j] = vec2.create(); - } - } - } - } -}; - -MeshDisplacementCacheManager.prototype.allReady = function() -{ - if(this.is_ready) { - return true; - } - else { - var num_frames = this.end_time - this.start_time + 1; - var ready_cnt = 0; - for(var i = 0; i < this.displacement_cache_data_ready.length; i++) { - if(this.displacement_cache_data_ready[i]) { - ready_cnt++; - } - } - - if(ready_cnt == num_frames) { - this.is_ready = true; - } - } - - return this.is_ready; -}; - -MeshDisplacementCacheManager.prototype.makeAllReady = function() -{ - for(var i = 0; i < this.displacement_cache_data_ready.length; i++) { - this.displacement_cache_data_ready[i] = true; - } -}; - -// MeshUVWarpCacheManager -function MeshUVWarpCacheManager() -{ - this.is_ready = false; - this.uv_cache_table = null; - this.uv_cache_data_ready = null; - this.uv_cache_table = []; - this.uv_cache_data_ready = []; -}; - -MeshUVWarpCacheManager.prototype.init = function(start_time_in, end_time_in) -{ - this.start_time = start_time_in; - this.end_time = end_time_in; - - var num_frames = this.end_time - this.start_time + 1; - this.uv_cache_table = []; - - this.uv_cache_data_ready = []; - for(var i = 0; i < num_frames; i++) { - this.uv_cache_table.push([]); - this.uv_cache_data_ready.push(false); - } - - this.is_ready = false; -}; - -MeshUVWarpCacheManager.prototype.getStartTime = function() -{ - return this.start_time; -}; - -MeshUVWarpCacheManager.prototype.getEndime = function() -{ - return this.end_time; -}; - -MeshUVWarpCacheManager.prototype.getIndexByTime = function(time_in) -{ - var retval = time_in - this.start_time; - retval = Utils.clamp(retval, 0, (this.uv_cache_table.length) - 1); - - return retval; -}; - -MeshUVWarpCacheManager.prototype.retrieveValuesAtTime = function(time_in, regions_map) -{ - var base_time = this.getIndexByTime(Math.floor(time_in)); - var end_time = this.getIndexByTime(Math.ceil(time_in)); - - var ratio = (time_in - Math.floor(time_in)); - - if(this.uv_cache_data_ready.length == 0) { - return; - } - - if((this.uv_cache_data_ready[base_time] == false) - || (this.uv_cache_data_ready[end_time] == false)) - { - return; - } - - var base_cache = this.uv_cache_table[base_time]; - var end_cache = this.uv_cache_table[end_time]; - - for(var i = 0; i < base_cache.length; i++) { - var base_data = base_cache[i]; - var end_data = end_cache[i]; - var cur_key = base_data.getKey(); - - var set_region = regions_map[cur_key]; - if(set_region.getUseUvWarp()) { - var final_local_offset = base_data.getUvWarpLocalOffset(); - - - var final_global_offset = base_data.getUvWarpGlobalOffset(); - - var final_scale = base_data.getUvWarpScale(); - /* - Vector2 final_local_offset = ((1.0f - ratio) * base_data.getUvWarpLocalOffset()) + - (ratio * end_data.getUvWarpLocalOffset()); - - Vector2 final_global_offset = ((1.0f - ratio) * base_data.getUvWarpGlobalOffset()) + - (ratio * end_data.getUvWarpGlobalOffset()); - - Vector2 final_scale = ((1.0f - ratio) * base_data.getUvWarpScale()) + - (ratio * end_data.getUvWarpScale()); - - */ - - - set_region.setUvWarpLocalOffset(final_local_offset); - set_region.setUvWarpGlobalOffset(final_global_offset); - set_region.setUvWarpScale(final_scale); - } - } -}; - -MeshUVWarpCacheManager.prototype.allReady = function() -{ - if(this.is_ready) { - return true; - } - else { - var num_frames = this.end_time - this.start_time + 1; - var ready_cnt = 0; - for(var i = 0; i < this.uv_cache_data_ready.length; i++) { - if(uv_cache_data_ready[i]) { - ready_cnt++; - } - } - - if(ready_cnt == num_frames) { - this.is_ready = true; - } - } - - return this.is_ready; -}; - -MeshUVWarpCacheManager.prototype.makeAllReady = function() -{ - for(var i = 0; i < this.uv_cache_data_ready.length; i++) { - this.uv_cache_data_ready[i] = true; - } -}; - -// CreatureModuleUtils -var CreatureModuleUtils = {}; - -CreatureModuleUtils.GetAllAnimationNames = function(json_data) -{ - var json_animations = json_data["animation"]; - var keys = []; - for (var name in json_animations) - { - keys.push(name); - } - - return keys; -}; - -CreatureModuleUtils.getFloatArray = function(raw_data) -{ - return raw_data; -}; - -CreatureModuleUtils.getIntArray = function(raw_data) -{ - return raw_data; -}; - - -CreatureModuleUtils.ReadPointsArray2DJSON = function(data, key) -{ - var raw_array = CreatureModuleUtils.getFloatArray(data[key]); - var ret_list = []; - var num_points = raw_array.length / 2; - for (var i = 0; i < num_points; i++) - { - var cur_index = i * 2; - ret_list.push( - vec2.fromValues(raw_array[0 + cur_index], raw_array[1 + cur_index])); - } - - return ret_list; -}; - -CreatureModuleUtils.ReadFloatArray3DJSON = function(data, key) -{ - var raw_array = CreatureModuleUtils.getFloatArray(data[key]); - - var ret_list = []; - var num_points = raw_array.length / 2; - for (var i = 0; i < num_points; i++) - { - var cur_index = i * 2; - ret_list.push(raw_array[0 + cur_index]); - ret_list.push(raw_array[1 + cur_index]); - ret_list.push(0); - } - - return ret_list; -}; - -CreatureModuleUtils.ReadBoolJSON = function(data, key) -{ - var val = data[key]; - return val; -}; - -CreatureModuleUtils.ReadFloatArrayJSON = function(data, key) -{ - /* - var raw_array = getFloatArray(data.get[key]); - var ret_list = []; - for(var i = 0; i < raw_array.length; i++) - { - ret_list.push(raw_array[i]); - } - - return ret_list; - */ - - return data[key]; -}; - -CreatureModuleUtils.ReadIntArrayJSON = function(data, key) -{ - /* - int[] raw_array = getIntArray (data.get(key)); - java.util.Vector ret_list = new java.util.Vector(); - - for(int i = 0; i < raw_array.length; i++) { - ret_list.add(raw_array[i]); - } - - return ret_list; - */ - return data[key]; -}; - -CreatureModuleUtils.ReadMatrixJSON = function(data, key) -{ - var raw_array = CreatureModuleUtils.getFloatArray(data[key]); - var retMat = mat4.create(); - for(var i = 0; i < 16; i++) - { - retMat[i] = raw_array[i]; - } - - return retMat; -}; - -CreatureModuleUtils.ReadVector2JSON = function(data, key) -{ - var raw_array = CreatureModuleUtils.getFloatArray(data[key]); - return vec2.fromValues(raw_array[0], raw_array[1]); -}; - - -CreatureModuleUtils.ReadVector3JSON = function(data, key) -{ - var raw_array = CreatureModuleUtils.getFloatArray(data[key]); - return vec3.fromValues(raw_array[0], raw_array[1], 0); -}; - -CreatureModuleUtils.CreateBones = function(json_obj, key) { - var root_bone = null; - var base_obj = json_obj[key]; - //var bone_data = new HashMap>>(); - var bone_data = {}; - var child_set = {}; - - // layout bones - for (var cur_name in base_obj) - { - - var cur_node = base_obj[cur_name]; - - var cur_id = cur_node["id"]; //GetJSONNodeFromKey(*cur_node, "id")->value.toNumber(); - var cur_parent_mat = CreatureModuleUtils.ReadMatrixJSON(cur_node, "restParentMat"); - - var cur_local_rest_start_pt = CreatureModuleUtils.ReadVector3JSON(cur_node, "localRestStartPt"); - var cur_local_rest_end_pt = CreatureModuleUtils.ReadVector3JSON(cur_node, "localRestEndPt"); - var cur_children_ids = CreatureModuleUtils.ReadIntArrayJSON(cur_node, "children"); - - var new_bone = new MeshBone(cur_name, - vec3.create(), - vec3.create(), - cur_parent_mat); - new_bone.local_rest_start_pt = cur_local_rest_start_pt; - new_bone.local_rest_end_pt = cur_local_rest_end_pt; - new_bone.calcRestData(); - new_bone.setTagId(cur_id); - - bone_data[cur_id] = {first:new_bone, second:cur_children_ids}; - - for(var i = 0; i < cur_children_ids.length; i++){ - var cur_child_id = cur_children_ids[i]; - child_set[cur_child_id] = cur_child_id; - } - } - - // Find root - for(var cur_id in bone_data) - { - if( (cur_id in child_set) == false) { - // not a child, so is root - var cur_data = bone_data[cur_id]; - root_bone = cur_data.first; - break; - } - } - - // construct hierarchy - for(var cur_id in bone_data) - { - var cur_data = bone_data[cur_id]; - - var cur_bone = cur_data.first; - var children_ids = cur_data.second; - for(var i = 0; i < children_ids.length; i++) - { - var cur_child_id = children_ids[i]; - var child_bone = bone_data[cur_child_id].first; - cur_bone.addChild(child_bone); - } - - } - - - return root_bone; -}; - -CreatureModuleUtils.CreateRegions = function(json_obj, key, indices_in, rest_pts_in, uvs_in) -{ - var ret_regions = []; - var base_obj = json_obj[key]; - - for (var cur_name in base_obj) - { - var cur_node = base_obj[cur_name]; - - var cur_id = cur_node["id"]; //(int)GetJSONNodeFromKey(*cur_node, "id")->value.toNumber(); - var cur_start_pt_index = cur_node["start_pt_index"]; //(int)GetJSONNodeFromKey(*cur_node, "start_pt_index")->value.toNumber(); - var cur_end_pt_index = cur_node["end_pt_index"]; //(int)GetJSONNodeFromKey(*cur_node, "end_pt_index")->value.toNumber(); - var cur_start_index = cur_node["start_index"]; //(int)GetJSONNodeFromKey(*cur_node, "start_index")->value.toNumber(); - var cur_end_index = cur_node["end_index"]; //(int)GetJSONNodeFromKey(*cur_node, "end_index")->value.toNumber(); - - var new_region = new MeshRenderRegion(indices_in, - rest_pts_in, - uvs_in, - cur_start_pt_index, - cur_end_pt_index, - cur_start_index, - cur_end_index); - - new_region.setName(cur_name); - new_region.setTagId(cur_id); - - // Read in weights - var weight_map = - new_region.normal_weight_map; - var weight_obj = cur_node["weights"]; - - for (var w_key in weight_obj) - { - var w_node = weight_obj[w_key]; - var values = CreatureModuleUtils.ReadFloatArrayJSON(weight_obj, w_key); - weight_map[w_key] = values; - } - - ret_regions.push(new_region); - } - - return ret_regions; -}; - -CreatureModuleUtils.GetStartEndTimes = function(json_obj, key) -{ - var start_time = 0; - var end_time = 0; - var first = true; - var base_obj = json_obj[key]; - - for (var cur_val in base_obj) - { - var cur_node = base_obj[cur_val]; - var cur_num = parseInt(cur_val); - if(first) { - start_time = cur_num; - end_time = cur_num; - first = false; - } - else { - if(cur_num > end_time) { - end_time = cur_num; - } - - if(cur_num < start_time) { - start_time = cur_num; - } - } - } - - return {first:start_time, second:end_time}; -}; - -CreatureModuleUtils.FillBoneCache = function(json_obj, key, start_time, end_time, cache_manager) -{ - var base_obj = json_obj[key]; - - cache_manager.init(start_time, end_time); - - for (var cur_time in base_obj) - { - var cur_node = base_obj[cur_time]; - - cache_list = []; - - for (var cur_name in cur_node) - { - var bone_node = cur_node[cur_name]; - - var cur_start_pt = CreatureModuleUtils.ReadVector3JSON(bone_node, "start_pt"); //ReadJSONVec4_2(*bone_node, "start_pt"); - var cur_end_pt = CreatureModuleUtils.ReadVector3JSON(bone_node, "end_pt"); //ReadJSONVec4_2(*bone_node, "end_pt"); - - var cache_data = new MeshBoneCache(cur_name); - cache_data.setWorldStartPt(cur_start_pt); - cache_data.setWorldEndPt(cur_end_pt); - - cache_list.push(cache_data); - } - - var set_index = cache_manager.getIndexByTime(cur_time); - cache_manager.bone_cache_table[set_index] = cache_list; - } - - cache_manager.makeAllReady(); -}; - -CreatureModuleUtils.FillDeformationCache = function(json_obj, key, start_time, end_time, cache_manager) -{ - var base_obj = json_obj[key]; - - cache_manager.init(start_time, end_time); - - for (var cur_time in base_obj) - { - var cur_node = base_obj[cur_time]; - - var cache_list = []; - - for (var cur_name in cur_node) - { - var mesh_node = cur_node[cur_name]; - - var cache_data = new MeshDisplacementCache(cur_name); - - var use_local_displacement = CreatureModuleUtils.ReadBoolJSON(mesh_node, "use_local_displacements"); //GetJSONNodeFromKey(*mesh_node, "use_local_displacements")->value.toBool(); - var use_post_displacement = CreatureModuleUtils.ReadBoolJSON(mesh_node, "use_post_displacements"); //GetJSONNodeFromKey(*mesh_node, "use_post_displacements")->value.toBool(); - - if(use_local_displacement == true) { - var read_pts = CreatureModuleUtils.ReadPointsArray2DJSON(mesh_node, "local_displacements"); //ReadJSONPoints2DVector(*mesh_node, "local_displacements"); - cache_data.setLocalDisplacements(read_pts); - } - - if(use_post_displacement == true) { - var read_pts = CreatureModuleUtils.ReadPointsArray2DJSON(mesh_node, "post_displacements"); //ReadJSONPoints2DVector(*mesh_node, "post_displacements"); - cache_data.setPostDisplacements(read_pts); - } - - cache_list.push(cache_data); - } - - var set_index = cache_manager.getIndexByTime(cur_time); - cache_manager.displacement_cache_table[set_index] = cache_list; - } - - cache_manager.makeAllReady(); -}; - -CreatureModuleUtils.FillUVSwapCache = function(json_obj, key, start_time, end_time, cache_manager) -{ - var base_obj = json_obj[key]; - - cache_manager.init(start_time, end_time); - - for (var cur_time in base_obj) - { - var cur_node = base_obj[cur_time]; - - var cache_list = []; - - for (var cur_name in cur_node) - { - var uv_node = cur_node[cur_name]; - - var cache_data = new MeshUVWarpCache(cur_name); - var use_uv = CreatureModuleUtils.ReadBoolJSON(uv_node, "enabled"); //GetJSONNodeFromKey(*uv_node, "enabled")->value.toBool(); - cache_data.setEnabled(use_uv); - if(use_uv == true) { - var local_offset = CreatureModuleUtils.ReadVector2JSON(uv_node, "local_offset"); //ReadJSONVec2(*uv_node, "local_offset"); - var global_offset = CreatureModuleUtils.ReadVector2JSON(uv_node, "global_offset"); //ReadJSONVec2(*uv_node, "global_offset"); - var scale = CreatureModuleUtils.ReadVector2JSON(uv_node, "scale"); //ReadJSONVec2(*uv_node, "scale"); - cache_data.setUvWarpLocalOffset(local_offset); - cache_data.setUvWarpGlobalOffset(global_offset); - cache_data.setUvWarpScale(scale); - } - - cache_list.push(cache_data); - } - - var set_index = cache_manager.getIndexByTime(cur_time); - cache_manager.uv_cache_table[set_index] = cache_list; - } - - cache_manager.makeAllReady(); -}; - -// Creature -function Creature(load_data) -{ - 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(load_data); -}; - -// Fills entire mesh with (r,g,b,a) colours -Creature.prototype.FillRenderColours = function(r, g, b, a) -{ - for(var i = 0; i < this.total_num_pts; i++) - { - var cur_colour_index = i * 4; - this.render_colours[0 + cur_colour_index] = r; - this.render_colours[1 + cur_colour_index] = g; - this.render_colours[2 + cur_colour_index] = b; - this.render_colours[3 + cur_colour_index] = a; - } -}; - -// Compute boundary indices - -Creature.prototype.ComputeBoundaryIndices = function() -{ - var freq_table = {}; - for(var i = 0; i < this.total_num_pts; i++) - { - freq_table[i] = 0; - } - - var cur_regions = this.render_composition.getRegions(); - for(var i = 0; i < this.global_indices.length; i++) - { - var cur_idx = this.global_indices[i]; - var is_found = false; - for(var j = 0; j < cur_regions.length; j++) - { - var cur_region = cur_regions[j]; - var cur_start_index = cur_region.getStartPtIndex(); - var cur_end_index = cur_region.getEndPtIndex(); - - if(cur_idx >= cur_start_index && cur_idx <= cur_end_index) - { - is_found = true; - break; - } - } - - - if(is_found) - { - freq_table[cur_idx]++; - } - } - - // now find the boundary indices who have <= 5 referenced triangles - this.boundary_indices = []; - for(var i = 0; i < this.total_num_pts; i++) - { - if(freq_table[i] <=5) - { - this.boundary_indices.push(i); - } - } -}; - -// Compute min and max bounds of the animated mesh -Creature.prototype.ComputeBoundaryMinMax = function() -{ - - if(this.boundary_indices.length <= 0) - { - this.ComputeBoundaryIndices(); - } - - - var firstIdx = this.boundary_indices[0] * 3; - var minPt = vec2.fromValues(this.render_pts[firstIdx + 0], this.render_pts[firstIdx + 1]); - var maxPt = vec2.fromValues(minPt[0], minPt[1]); - - - for(var i = 0; i < this.boundary_indices.length; i++) - { - var ref_idx = this.boundary_indices[i] * 3; - var ref_x = this.render_pts[ref_idx]; - var ref_y = this.render_pts[ref_idx + 1]; - - if(minPt[0] > ref_x) - { - minPt[0] = ref_x; - } - - if(minPt[1] > ref_y) - { - minPt[1] = ref_y; - } - - if(maxPt[0] < ref_x) - { - maxPt[0] = ref_x; - } - - if(maxPt[1] < ref_y) - { - maxPt[1] = ref_y; - } - } - - this.boundary_min = minPt; - this.boundary_max = maxPt; -}; - - -// Load data -Creature.prototype.LoadFromData = function(load_data) -{ - // Load points and topology - var json_mesh = load_data["mesh"]; - - this.global_pts = CreatureModuleUtils.ReadFloatArray3DJSON(json_mesh, "points"); - this.total_num_pts = this.global_pts.length / 3; - - this.global_indices = CreatureModuleUtils.ReadIntArrayJSON (json_mesh, "indices"); - this.total_num_indices = this.global_indices.length; - - this.global_uvs = CreatureModuleUtils.ReadFloatArrayJSON (json_mesh, "uvs"); - - - this.render_colours = []; - for(var i = 0; i < this.total_num_pts * 4; i++) - { - this.render_colours.push(0); - } - this.FillRenderColours(1, 1, 1, 1); - - this.render_pts = []; - - // Load bones - var root_bone = CreatureModuleUtils.CreateBones(load_data, "skeleton"); - - - // Load regions - var regions = CreatureModuleUtils.CreateRegions(json_mesh, - "regions", - this.global_indices, - this.global_pts, - this.global_uvs); - - // Add into composition - this.render_composition = new MeshRenderBoneComposition(); - this.render_composition.setRootBone(root_bone); - this.render_composition.getRootBone().computeRestParentTransforms(); - - for(var i = 0; i < regions.length; i++) { - var cur_region = regions[i]; - cur_region.setMainBoneKey(root_bone.getKey()); - cur_region.determineMainBone(root_bone); - this.render_composition.addRegion(cur_region); - } - - this.render_composition.initBoneMap(); - this.render_composition.initRegionsMap(); - - for(var i = 0; i < regions.length; i++) { - var cur_region = regions[i]; - cur_region.initFastNormalWeightMap(this.render_composition.bones_map); - } - - this.render_composition.resetToWorldRestPts(); -}; - -// CreatureAnimation -function CreatureAnimation(load_data, name_in) -{ - this.name = name_in; - 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(name_in, load_data); -}; - -CreatureAnimation.prototype.LoadFromData = function(name_in, load_data) -{ - var json_anim_base = load_data["animation"]; - var json_clip = json_anim_base[name_in]; - - var start_end_times = CreatureModuleUtils.GetStartEndTimes(json_clip, "bones"); - this.start_time = start_end_times.first; - this.end_time = start_end_times.second; - - // bone animation - CreatureModuleUtils.FillBoneCache(json_clip, - "bones", - this.start_time, - this.end_time, - this.bones_cache); - - // mesh deformation animation - CreatureModuleUtils.FillDeformationCache(json_clip, - "meshes", - this.start_time, - this.end_time, - this.displacement_cache); - - // uv swapping animation - CreatureModuleUtils.FillUVSwapCache(json_clip, - "uv_swaps", - this.start_time, - this.end_time, - this.uv_warp_cache); -}; - -CreatureAnimation.prototype.getIndexByTime = function(time_in) -{ - var retval = time_in - this.start_time; - retval = Utils.clamp(retval, 0, (this.cache_pts.length) - 1); - - return retval; -}; - -CreatureAnimation.prototype.verifyFillCache = function() -{ - if(this.fill_cache_pts.length == (this.end_time - this.start_time + 1)) - { - // ready to switch over - this.cache_pts = this.fill_cache_pts; - } -}; - -CreatureAnimation.prototype.poseFromCachePts = function(time_in, target_pts, num_pts) -{ - var cur_floor_time = this.getIndexByTime(Math.floor(time_in)); - var cur_ceil_time = this.getIndexByTime(Math.ceil(time_in)); - var cur_ratio = time_in - Math.floor(time_in); - - var set_pt = target_pts; - var floor_pts = this.cache_pts[cur_floor_time]; - var ceil_pts = this.cache_pts[cur_ceil_time]; - - var set_idx = 0; - var floor_idx = 0; - var ceil_idx = 0; - - for(var i = 0; i < num_pts; i++) - { - set_pt[set_idx + 0] = ((1.0 - cur_ratio) * floor_pts[floor_idx + 0]) + (cur_ratio * ceil_pts[ceil_idx + 0]); - set_pt[set_idx + 1] = ((1.0 - cur_ratio) * floor_pts[floor_idx + 1]) + (cur_ratio * ceil_pts[ceil_idx + 1]); - set_pt[set_idx + 2] = ((1.0 - cur_ratio) * floor_pts[floor_idx + 2]) + (cur_ratio * ceil_pts[ceil_idx + 2]); - - set_idx += 3; - floor_idx += 3; - ceil_idx += 3; - } -}; - -// CreatureManager -function CreatureManager(target_creature_in) -{ - this.target_creature = target_creature_in; - this.is_playing = false; - this.run_time = 0; - this.time_scale = 30.0; - this.blending_factor = 0; - this.should_loop = true; - this.use_custom_time_range = false; - 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 = false; - - this.active_blend_animation_names = []; - this.active_blend_animation_names.push(""); - this.active_blend_animation_names.push(""); -}; - -// Create an animation -CreatureManager.prototype.CreateAnimation = function(load_data, name_in) -{ - var new_animation = new CreatureAnimation(load_data, name_in); - this.AddAnimation(new_animation); -}; - -// Create all animations -CreatureManager.prototype.CreateAllAnimations = function(load_data) -{ - var all_animation_names = CreatureModuleUtils.GetAllAnimationNames (load_data); - for(var i = 0; i < all_animation_names.length; i++) - { - var cur_name = all_animation_names[i]; - this.CreateAnimation(load_data, cur_name); - } - - this.SetActiveAnimationName (all_animation_names.get(0)); -}; - -// Add an animation -CreatureManager.prototype.AddAnimation = function(animation_in) -{ - this.animations[animation_in.name] = animation_in; -}; - -// Return an animation -CreatureManager.prototype.GetAnimation = function(name_in) -{ - return this.animations[name_in]; -}; - -// Return the creature -CreatureManager.prototype.GetCreature = function() -{ - return this.target_creature; -}; - -// Returns all the animation names -CreatureManager.prototype.GetAnimationNames = function() -{ - var ret_names = []; - for(var cur_name in animations) { - ret_names.push(cur_name); - } - - return ret_names; -}; - -// Sets the current animation to be active by name -CreatureManager.prototype.SetActiveAnimationName = function(name_in, check_already_active) -{ - if (name_in == null || (name_in in this.animations) == false) { - return false; - } - - if(check_already_active == true) - { - if(this.active_animation_name == name_in) - { - return false; - } - } - - this.active_animation_name = name_in; - var cur_animation = this.animations[this.active_animation_name]; - this.run_time = cur_animation.start_time; - - var displacement_cache_manager = cur_animation.displacement_cache; - var displacement_table = - displacement_cache_manager.displacement_cache_table[0]; - - var uv_warp_cache_manager = cur_animation.uv_warp_cache; - var uv_swap_table = - uv_warp_cache_manager.uv_cache_table[0]; - - var render_composition = - this.target_creature.render_composition; - - var all_regions = render_composition.getRegions(); - - var index = 0; - for(var i = 0; i < all_regions.length; i++) - { - var cur_region = all_regions[i]; - // Setup active or inactive displacements - var use_local_displacements = !(displacement_table[index].getLocalDisplacements().length == 0); - var use_post_displacements = !(displacement_table[index].getPostDisplacements().length == 0); - cur_region.setUseLocalDisplacements(use_local_displacements); - cur_region.setUsePostDisplacements(use_post_displacements); - - // Setup active or inactive uv swaps - cur_region.setUseUvWarp(uv_swap_table[index].getEnabled()); - - index++; - } - - return true; -}; - -// Returns the name of the currently active animation -CreatureManager.prototype.GetActiveAnimationName = function() -{ - return this.active_animation_name; -}; - -// Returns the table of all animations -CreatureManager.prototype.GetAllAnimations = function() -{ - return this.animations; -}; - -// Creates a point cache for the current animation -CreatureManager.prototype.MakePointCache = function(animation_name_in) -{ - var store_run_time = this.getRunTime(); - var cur_animation = this.animations[animation_name_in]; - if(cur_animation.length > 0) - { - // cache already generated, just exit - return; - } - - var cache_pts_list = cur_animation.cache_pts; - - for(var i = cur_animation.start_time; i <= cur_animation.end_time; i++) - { - this.setRunTime(i); - var new_pts = []; - for (var j = 0; j < this.target_creature.total_num_pts * 3; j++) new_pts[j] = 0; - //auto new_pts = new glm::float32[target_creature->GetTotalNumPoints() * 3]; - this.PoseCreature(animation_name_in, new_pts); - - cache_pts_list.push(new_pts); - } - - this.setRunTime(store_run_time); -}; - -// Fills up a single frame for a point cache animation -// Point caching is only enabled when the cache is FULLY filled up -// Remember the new filled cache is Appended onto the end of a list -// There is no indexing by time here so MAKE SURE this cache is filled up sequentially! -CreatureManager.prototype.FillSinglePointCacheFrame = function(animation_name_in, time_in) -{ - var store_run_time = this.getRunTime(); - var cur_animation = this.animations[animation_name_in]; - - this.setRunTime(time_in); - var new_pts = []; - for (var j = 0; j < this.target_creature.total_num_pts * 3; j++) new_pts[j] = 0; - this.PoseCreature(animation_name_in, new_pts); - - cur_animation.fill_cache_pts.push(new_pts); - cur_animation.verifyFillCache(); - - this.setRunTime(store_run_time); -}; - -// Returns if animation is playing -CreatureManager.prototype.GetIsPlaying = function() -{ - return this.is_playing; -}; - -// Sets whether to loop the animation -CreatureManager.prototype.SetShouldLoop = function(flag_in) -{ - this.should_loop = flag_in; -}; - -// Sets whether to use a user defined custom time range for the currently -// active animation clip -CreatureManager.prototype.SetUseCustomTimeRange = function(flag_in) -{ - this.use_custom_time_range = flag_in; -}; - -// Sets the user defined custom time range -CreatureManager.prototype.SetCustomTimeRange = function(start_time_in, end_time_in) -{ - this.custom_start_time = start_time_in; - this.custom_end_time = end_time_in; -}; - -// Sets whether the animation is playing -CreatureManager.prototype.SetIsPlaying = function(flag_in) -{ - this.is_playing = flag_in; -}; - -// Resets animation to start time -CreatureManager.prototype.ResetToStartTimes = function() -{ - var cur_animation = this.animations[active_animation_name]; - this.run_time = cur_animation.start_time; -}; - -// Sets the run time of the animation -CreatureManager.prototype.setRunTime = function(time_in) -{ - this.run_time = time_in; - this.correctTime (); -}; - -// Increments the run time of the animation by a delta value -CreatureManager.prototype.increRunTime = function(delta_in) -{ - this.run_time += delta_in; - this.correctTime (); -}; - -CreatureManager.prototype.correctTime = function() -{ - var cur_animation = this.animations[this.active_animation_name]; - var anim_start_time = cur_animation.start_time; - var anim_end_time = cur_animation.end_time; - - if(this.use_custom_time_range) - { - anim_start_time = this.custom_start_time; - anim_end_time = this.custom_end_time; - } - - if(this.run_time > anim_end_time) - { - if(this.should_loop) - { - this.run_time = anim_start_time; - } - else { - this.run_time = anim_end_time; - } - } - else if(this.run_time < anim_start_time) - { - if(this.should_loop) - { - this.run_time = anim_end_time; - } - else { - this.run_time = anim_start_time; - } - } -}; - -// Returns the current run time of the animation -CreatureManager.prototype.getRunTime = function() -{ - return this.run_time; -}; - -// Runs a single step of the animation for a given delta timestep -CreatureManager.prototype.Update = function(delta) -{ - if(!this.is_playing) - { - return; - } - - this.increRunTime(delta * this.time_scale); - - this.RunCreature (); -}; - -CreatureManager.prototype.RunAtTime = function(time_in) -{ - if(!this.is_playing) - { - return; - } - - this.setRunTime(time_in); - this.RunCreature (); -}; - -CreatureManager.prototype.RunCreature = function() -{ - if(this.do_blending) - { - for(var i = 0; i < 2; i++) { - var cur_animation = this.animations[this.active_blend_animation_names[i]]; - if(cur_animation.cache_pts.length > 0) - { - cur_animation.poseFromCachePts(this.getRunTime(), this.blend_render_pts[i], this.target_creature.total_num_pts); - } - else { - this.PoseCreature(this.active_blend_animation_names[i], this.blend_render_pts[i]); - } - } - - for(var j = 0; j < this.target_creature.total_num_pts * 3; j++) - { - var set_data_index = j; - var read_data_1 = this.blend_render_pts[0][j]; - var read_data_2 = this.blend_render_pts[1][j]; - /* - target_creature.render_pts[set_data_index] = - ((1.0f - blending_factor) * (read_data_1)) + - (blending_factor * (read_data_2)); - */ - this.target_creature.render_pts.set(set_data_index, - ((1.0 - blending_factor) * (read_data_1)) + - (blending_factor * (read_data_2))); - - } - } - else { - var cur_animation = this.animations[this.active_animation_name]; - if(cur_animation.cache_pts.length > 0) - { - cur_animation.poseFromCachePts(this.getRunTime(), this.target_creature.render_pts, this.target_creature.total_num_pts); - // cur_animation->poseFromCachePts(getRunTime(), target_creature->GetRenderPts(), target_creature->GetTotalNumPoints()); - } - else { - this.PoseCreature(this.active_animation_name, this.target_creature.render_pts); - } - } -}; - -// Sets scaling for time -CreatureManager.prototype.SetTimeScale = function(scale_in) -{ - this.time_scale = scale_in; -}; - -// Enables/Disables blending -CreatureManager.prototype.SetBlending = function(flag_in) -{ - this.do_blending = flag_in; - - if (this.do_blending) { - if (this.blend_render_pts[0].length == 0) { - var new_vec = []; - for(var i = 0; i < target_creature.total_num_pts * 3; i++) - { - new_vec.push(0); - } - - this.blend_render_pts.set(0, new_vec); - } - - if (this.blend_render_pts[1].length == 0) { - var new_vec = []; - for(var i = 0; i < this.target_creature.total_num_pts * 3; i++) - { - new_vec.push(0); - } - - this.blend_render_pts[1] = new_vec; - } - - } -}; - -// Sets blending animation names -CreatureManager.prototype.SetBlendingAnimations = function(name_1, name_2) -{ - this.active_blend_animation_names[0] = name_1; - this.active_blend_animation_names[1] = name_2; -}; - -// Sets the blending factor -CreatureManager.prototype.SetBlendingFactor = function(value_in) -{ - this.blending_factor = value_in; -}; - -// Given a set of coordinates in local creature space, -// see if any bone is in contact -CreatureManager.prototype.IsContactBone = function(pt_in, radius) -{ - var cur_bone = this.target_creature.render_composition.getRootBone(); - return this.ProcessContactBone(pt_in, radius, cur_bone); -}; - - -CreatureManager.prototype.PoseCreature = function(animation_name_in, target_pts) -{ - var cur_animation = this.animations[animation_name_in]; - - var bone_cache_manager = cur_animation.bones_cache; - var displacement_cache_manager = cur_animation.displacement_cache; - var uv_warp_cache_manager = cur_animation.uv_warp_cache; - - var render_composition = - this.target_creature.render_composition; - - // Extract values from caches - var bones_map = - render_composition.getBonesMap(); - var regions_map = - render_composition.getRegionsMap(); - - bone_cache_manager.retrieveValuesAtTime(this.getRunTime(), - bones_map); - - if(this.bones_override_callback != null) - { - this.bones_override_callback(bones_map); - } - - displacement_cache_manager.retrieveValuesAtTime(this.getRunTime(), - regions_map); - uv_warp_cache_manager.retrieveValuesAtTime(this.getRunTime(), - regions_map); - - - // Do posing, decide if we are blending or not - var cur_regions = - render_composition.getRegions(); - var cur_bones = - render_composition.getBonesMap(); - - render_composition.updateAllTransforms(false); - for(var j = 0, l = cur_regions.length; j < l; j++) { - var cur_region = cur_regions[j]; - - var cur_pt_index = cur_region.getStartPtIndex(); - - - cur_region.poseFinalPts(target_pts, - cur_pt_index * 3, - cur_bones); - - // add in z offsets for different regions - - var start = cur_region.getStartPtIndex() * 3; - var end = cur_region.getEndPtIndex() * 3; - for(var k = start; - k <= end; - k+=3) - { - target_pts[k + 2] = -j * 0.001; - } - - } -}; - - -/** - * The MIT License (MIT) - * - * Copyright (c) 2015 p2.js authors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -!function(e){if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&false)define(e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.p2=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o=0 && s<=1 && t>=0 && t<=1); -}; - - -},{"./Scalar":4}],2:[function(_dereq_,module,exports){ -module.exports = Point; - -/** - * Point related functions - * @class Point - */ -function Point(){}; - -/** - * Get the area of a triangle spanned by the three given points. Note that the area will be negative if the points are not given in counter-clockwise order. - * @static - * @method area - * @param {Array} a - * @param {Array} b - * @param {Array} c - * @return {Number} - */ -Point.area = function(a,b,c){ - return (((b[0] - a[0])*(c[1] - a[1]))-((c[0] - a[0])*(b[1] - a[1]))); -}; - -Point.left = function(a,b,c){ - return Point.area(a,b,c) > 0; -}; - -Point.leftOn = function(a,b,c) { - return Point.area(a, b, c) >= 0; -}; - -Point.right = function(a,b,c) { - return Point.area(a, b, c) < 0; -}; - -Point.rightOn = function(a,b,c) { - return Point.area(a, b, c) <= 0; -}; - -var tmpPoint1 = [], - tmpPoint2 = []; - -/** - * Check if three points are collinear - * @method collinear - * @param {Array} a - * @param {Array} b - * @param {Array} c - * @param {Number} [thresholdAngle=0] Threshold angle to use when comparing the vectors. The function will return true if the angle between the resulting vectors is less than this value. Use zero for max precision. - * @return {Boolean} - */ -Point.collinear = function(a,b,c,thresholdAngle) { - if(!thresholdAngle) - return Point.area(a, b, c) == 0; - else { - var ab = tmpPoint1, - bc = tmpPoint2; - - ab[0] = b[0]-a[0]; - ab[1] = b[1]-a[1]; - bc[0] = c[0]-b[0]; - bc[1] = c[1]-b[1]; - - var dot = ab[0]*bc[0] + ab[1]*bc[1], - magA = Math.sqrt(ab[0]*ab[0] + ab[1]*ab[1]), - magB = Math.sqrt(bc[0]*bc[0] + bc[1]*bc[1]), - angle = Math.acos(dot/(magA*magB)); - return angle < thresholdAngle; - } -}; - -Point.sqdist = function(a,b){ - var dx = b[0] - a[0]; - var dy = b[1] - a[1]; - return dx * dx + dy * dy; -}; - -},{}],3:[function(_dereq_,module,exports){ -var Line = _dereq_("./Line") -, Point = _dereq_("./Point") -, Scalar = _dereq_("./Scalar") - -module.exports = Polygon; - -/** - * Polygon class. - * @class Polygon - * @constructor - */ -function Polygon(){ - - /** - * Vertices that this polygon consists of. An array of array of numbers, example: [[0,0],[1,0],..] - * @property vertices - * @type {Array} - */ - this.vertices = []; -} - -/** - * Get a vertex at position i. It does not matter if i is out of bounds, this function will just cycle. - * @method at - * @param {Number} i - * @return {Array} - */ -Polygon.prototype.at = function(i){ - var v = this.vertices, - s = v.length; - return v[i < 0 ? i % s + s : i % s]; -}; - -/** - * Get first vertex - * @method first - * @return {Array} - */ -Polygon.prototype.first = function(){ - return this.vertices[0]; -}; - -/** - * Get last vertex - * @method last - * @return {Array} - */ -Polygon.prototype.last = function(){ - return this.vertices[this.vertices.length-1]; -}; - -/** - * Clear the polygon data - * @method clear - * @return {Array} - */ -Polygon.prototype.clear = function(){ - this.vertices.length = 0; -}; - -/** - * Append points "from" to "to"-1 from an other polygon "poly" onto this one. - * @method append - * @param {Polygon} poly The polygon to get points from. - * @param {Number} from The vertex index in "poly". - * @param {Number} to The end vertex index in "poly". Note that this vertex is NOT included when appending. - * @return {Array} - */ -Polygon.prototype.append = function(poly,from,to){ - if(typeof(from) == "undefined") throw new Error("From is not given!"); - if(typeof(to) == "undefined") throw new Error("To is not given!"); - - if(to-1 < from) throw new Error("lol1"); - if(to > poly.vertices.length) throw new Error("lol2"); - if(from < 0) throw new Error("lol3"); - - for(var i=from; i v[br][0])) { - br = i; - } - } - - // reverse poly if clockwise - if (!Point.left(this.at(br - 1), this.at(br), this.at(br + 1))) { - this.reverse(); - } -}; - -/** - * Reverse the vertices in the polygon - * @method reverse - */ -Polygon.prototype.reverse = function(){ - var tmp = []; - for(var i=0, N=this.vertices.length; i!==N; i++){ - tmp.push(this.vertices.pop()); - } - this.vertices = tmp; -}; - -/** - * Check if a point in the polygon is a reflex point - * @method isReflex - * @param {Number} i - * @return {Boolean} - */ -Polygon.prototype.isReflex = function(i){ - return Point.right(this.at(i - 1), this.at(i), this.at(i + 1)); -}; - -var tmpLine1=[], - tmpLine2=[]; - -/** - * Check if two vertices in the polygon can see each other - * @method canSee - * @param {Number} a Vertex index 1 - * @param {Number} b Vertex index 2 - * @return {Boolean} - */ -Polygon.prototype.canSee = function(a,b) { - var p, dist, l1=tmpLine1, l2=tmpLine2; - - if (Point.leftOn(this.at(a + 1), this.at(a), this.at(b)) && Point.rightOn(this.at(a - 1), this.at(a), this.at(b))) { - return false; - } - dist = Point.sqdist(this.at(a), this.at(b)); - for (var i = 0; i !== this.vertices.length; ++i) { // for each edge - if ((i + 1) % this.vertices.length === a || i === a) // ignore incident edges - continue; - if (Point.leftOn(this.at(a), this.at(b), this.at(i + 1)) && Point.rightOn(this.at(a), this.at(b), this.at(i))) { // if diag intersects an edge - l1[0] = this.at(a); - l1[1] = this.at(b); - l2[0] = this.at(i); - l2[1] = this.at(i + 1); - p = Line.lineInt(l1,l2); - if (Point.sqdist(this.at(a), p) < dist) { // if edge is blocking visibility to b - return false; - } - } - } - - return true; -}; - -/** - * Copy the polygon from vertex i to vertex j. - * @method copy - * @param {Number} i - * @param {Number} j - * @param {Polygon} [targetPoly] Optional target polygon to save in. - * @return {Polygon} The resulting copy. - */ -Polygon.prototype.copy = function(i,j,targetPoly){ - var p = targetPoly || new Polygon(); - p.clear(); - if (i < j) { - // Insert all vertices from i to j - for(var k=i; k<=j; k++) - p.vertices.push(this.vertices[k]); - - } else { - - // Insert vertices 0 to j - for(var k=0; k<=j; k++) - p.vertices.push(this.vertices[k]); - - // Insert vertices i to end - for(var k=i; k 0) - return this.slice(edges); - else - return [this]; -}; - -/** - * Slices the polygon given one or more cut edges. If given one, this function will return two polygons (false on failure). If many, an array of polygons. - * @method slice - * @param {Array} cutEdges A list of edges, as returned by .getCutEdges() - * @return {Array} - */ -Polygon.prototype.slice = function(cutEdges){ - if(cutEdges.length == 0) return [this]; - if(cutEdges instanceof Array && cutEdges.length && cutEdges[0] instanceof Array && cutEdges[0].length==2 && cutEdges[0][0] instanceof Array){ - - var polys = [this]; - - for(var i=0; i maxlevel){ - console.warn("quickDecomp: max level ("+maxlevel+") reached."); - return result; - } - - for (var i = 0; i < this.vertices.length; ++i) { - if (poly.isReflex(i)) { - reflexVertices.push(poly.vertices[i]); - upperDist = lowerDist = Number.MAX_VALUE; - - - for (var j = 0; j < this.vertices.length; ++j) { - if (Point.left(poly.at(i - 1), poly.at(i), poly.at(j)) - && Point.rightOn(poly.at(i - 1), poly.at(i), poly.at(j - 1))) { // if line intersects with an edge - p = getIntersectionPoint(poly.at(i - 1), poly.at(i), poly.at(j), poly.at(j - 1)); // find the point of intersection - if (Point.right(poly.at(i + 1), poly.at(i), p)) { // make sure it's inside the poly - d = Point.sqdist(poly.vertices[i], p); - if (d < lowerDist) { // keep only the closest intersection - lowerDist = d; - lowerInt = p; - lowerIndex = j; - } - } - } - if (Point.left(poly.at(i + 1), poly.at(i), poly.at(j + 1)) - && Point.rightOn(poly.at(i + 1), poly.at(i), poly.at(j))) { - p = getIntersectionPoint(poly.at(i + 1), poly.at(i), poly.at(j), poly.at(j + 1)); - if (Point.left(poly.at(i - 1), poly.at(i), p)) { - d = Point.sqdist(poly.vertices[i], p); - if (d < upperDist) { - upperDist = d; - upperInt = p; - upperIndex = j; - } - } - } - } - - // if there are no vertices to connect to, choose a point in the middle - if (lowerIndex == (upperIndex + 1) % this.vertices.length) { - //console.log("Case 1: Vertex("+i+"), lowerIndex("+lowerIndex+"), upperIndex("+upperIndex+"), poly.size("+this.vertices.length+")"); - p[0] = (lowerInt[0] + upperInt[0]) / 2; - p[1] = (lowerInt[1] + upperInt[1]) / 2; - steinerPoints.push(p); - - if (i < upperIndex) { - //lowerPoly.insert(lowerPoly.end(), poly.begin() + i, poly.begin() + upperIndex + 1); - lowerPoly.append(poly, i, upperIndex+1); - lowerPoly.vertices.push(p); - upperPoly.vertices.push(p); - if (lowerIndex != 0){ - //upperPoly.insert(upperPoly.end(), poly.begin() + lowerIndex, poly.end()); - upperPoly.append(poly,lowerIndex,poly.vertices.length); - } - //upperPoly.insert(upperPoly.end(), poly.begin(), poly.begin() + i + 1); - upperPoly.append(poly,0,i+1); - } else { - if (i != 0){ - //lowerPoly.insert(lowerPoly.end(), poly.begin() + i, poly.end()); - lowerPoly.append(poly,i,poly.vertices.length); - } - //lowerPoly.insert(lowerPoly.end(), poly.begin(), poly.begin() + upperIndex + 1); - lowerPoly.append(poly,0,upperIndex+1); - lowerPoly.vertices.push(p); - upperPoly.vertices.push(p); - //upperPoly.insert(upperPoly.end(), poly.begin() + lowerIndex, poly.begin() + i + 1); - upperPoly.append(poly,lowerIndex,i+1); - } - } else { - // connect to the closest point within the triangle - //console.log("Case 2: Vertex("+i+"), closestIndex("+closestIndex+"), poly.size("+this.vertices.length+")\n"); - - if (lowerIndex > upperIndex) { - upperIndex += this.vertices.length; - } - closestDist = Number.MAX_VALUE; - - if(upperIndex < lowerIndex){ - return result; - } - - for (var j = lowerIndex; j <= upperIndex; ++j) { - if (Point.leftOn(poly.at(i - 1), poly.at(i), poly.at(j)) - && Point.rightOn(poly.at(i + 1), poly.at(i), poly.at(j))) { - d = Point.sqdist(poly.at(i), poly.at(j)); - if (d < closestDist) { - closestDist = d; - closestIndex = j % this.vertices.length; - } - } - } - - if (i < closestIndex) { - lowerPoly.append(poly,i,closestIndex+1); - if (closestIndex != 0){ - upperPoly.append(poly,closestIndex,v.length); - } - upperPoly.append(poly,0,i+1); - } else { - if (i != 0){ - lowerPoly.append(poly,i,v.length); - } - lowerPoly.append(poly,0,closestIndex+1); - upperPoly.append(poly,closestIndex,i+1); - } - } - - // solve smallest poly first - if (lowerPoly.vertices.length < upperPoly.vertices.length) { - lowerPoly.quickDecomp(result,reflexVertices,steinerPoints,delta,maxlevel,level); - upperPoly.quickDecomp(result,reflexVertices,steinerPoints,delta,maxlevel,level); - } else { - upperPoly.quickDecomp(result,reflexVertices,steinerPoints,delta,maxlevel,level); - lowerPoly.quickDecomp(result,reflexVertices,steinerPoints,delta,maxlevel,level); - } - - return result; - } - } - result.push(this); - - return result; -}; - -/** - * Remove collinear points in the polygon. - * @method removeCollinearPoints - * @param {Number} [precision] The threshold angle to use when determining whether two edges are collinear. Use zero for finest precision. - * @return {Number} The number of points removed - */ -Polygon.prototype.removeCollinearPoints = function(precision){ - var num = 0; - for(var i=this.vertices.length-1; this.vertices.length>3 && i>=0; --i){ - if(Point.collinear(this.at(i-1),this.at(i),this.at(i+1),precision)){ - // Remove the middle point - this.vertices.splice(i%this.vertices.length,1); - i--; // Jump one point forward. Otherwise we may get a chain removal - num++; - } - } - return num; -}; - -},{"./Line":1,"./Point":2,"./Scalar":4}],4:[function(_dereq_,module,exports){ -module.exports = Scalar; - -/** - * Scalar functions - * @class Scalar - */ -function Scalar(){} - -/** - * Check if two scalars are equal - * @static - * @method eq - * @param {Number} a - * @param {Number} b - * @param {Number} [precision] - * @return {Boolean} - */ -Scalar.eq = function(a,b,precision){ - precision = precision || 0; - return Math.abs(a-b) < precision; -}; - -},{}],5:[function(_dereq_,module,exports){ -module.exports = { - Polygon : _dereq_("./Polygon"), - Point : _dereq_("./Point"), -}; - -},{"./Point":2,"./Polygon":3}],6:[function(_dereq_,module,exports){ -module.exports={ - "name": "p2", - "version": "0.7.0", - "description": "A JavaScript 2D physics engine.", - "author": "Stefan Hedman (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(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2') -, Utils = _dereq_('../utils/Utils'); - -module.exports = AABB; - -/** - * Axis aligned bounding box class. - * @class AABB - * @constructor - * @param {Object} [options] - * @param {Array} [options.upperBound] - * @param {Array} [options.lowerBound] - */ -function AABB(options){ - - /** - * The lower bound of the bounding box. - * @property lowerBound - * @type {Array} - */ - this.lowerBound = vec2.create(); - if(options && options.lowerBound){ - vec2.copy(this.lowerBound, options.lowerBound); - } - - /** - * The upper bound of the bounding box. - * @property upperBound - * @type {Array} - */ - this.upperBound = vec2.create(); - if(options && options.upperBound){ - vec2.copy(this.upperBound, options.upperBound); - } -} - -var tmp = vec2.create(); - -/** - * Set the AABB bounds from a set of points, transformed by the given position and angle. - * @method setFromPoints - * @param {Array} points An array of vec2's. - * @param {Array} position - * @param {number} angle - * @param {number} skinSize Some margin to be added to the AABB. - */ -AABB.prototype.setFromPoints = function(points, position, angle, skinSize){ - var l = this.lowerBound, - u = this.upperBound; - - if(typeof(angle) !== "number"){ - angle = 0; - } - - // Set to the first point - if(angle !== 0){ - vec2.rotate(l, points[0], angle); - } else { - vec2.copy(l, points[0]); - } - vec2.copy(u, l); - - // Compute cosines and sines just once - var cosAngle = Math.cos(angle), - sinAngle = Math.sin(angle); - for(var i = 1; i u[j]){ - u[j] = p[j]; - } - if(p[j] < l[j]){ - l[j] = p[j]; - } - } - } - - // Add offset - if(position){ - vec2.add(this.lowerBound, this.lowerBound, position); - vec2.add(this.upperBound, this.upperBound, position); - } - - if(skinSize){ - this.lowerBound[0] -= skinSize; - this.lowerBound[1] -= skinSize; - this.upperBound[0] += skinSize; - this.upperBound[1] += skinSize; - } -}; - -/** - * Copy bounds from an AABB to this AABB - * @method copy - * @param {AABB} aabb - */ -AABB.prototype.copy = function(aabb){ - vec2.copy(this.lowerBound, aabb.lowerBound); - vec2.copy(this.upperBound, aabb.upperBound); -}; - -/** - * Extend this AABB so that it covers the given AABB too. - * @method extend - * @param {AABB} aabb - */ -AABB.prototype.extend = function(aabb){ - // Loop over x and y - var i = 2; - while(i--){ - // Extend lower bound - var l = aabb.lowerBound[i]; - if(this.lowerBound[i] > l){ - this.lowerBound[i] = l; - } - - // Upper - var u = aabb.upperBound[i]; - if(this.upperBound[i] < u){ - this.upperBound[i] = u; - } - } -}; - -/** - * Returns true if the given AABB overlaps this AABB. - * @method overlaps - * @param {AABB} aabb - * @return {Boolean} - */ -AABB.prototype.overlaps = function(aabb){ - var l1 = this.lowerBound, - u1 = this.upperBound, - l2 = aabb.lowerBound, - u2 = aabb.upperBound; - - // l2 u2 - // |---------| - // |--------| - // l1 u1 - - return ((l2[0] <= u1[0] && u1[0] <= u2[0]) || (l1[0] <= u2[0] && u2[0] <= u1[0])) && - ((l2[1] <= u1[1] && u1[1] <= u2[1]) || (l1[1] <= u2[1] && u2[1] <= u1[1])); -}; - -/** - * @method containsPoint - * @param {Array} point - * @return {boolean} - */ -AABB.prototype.containsPoint = function(point){ - var l = this.lowerBound, - u = this.upperBound; - return l[0] <= point[0] && point[0] <= u[0] && l[1] <= point[1] && point[1] <= u[1]; -}; - -/** - * Check if the AABB is hit by a ray. - * @method overlapsRay - * @param {Ray} ray - * @return {number} -1 if no hit, a number between 0 and 1 if hit. - */ -AABB.prototype.overlapsRay = function(ray){ - var t = 0; - - // ray.direction is unit direction vector of ray - var dirFracX = 1 / ray.direction[0]; - var dirFracY = 1 / ray.direction[1]; - - // this.lowerBound is the corner of AABB with minimal coordinates - left bottom, rt is maximal corner - var t1 = (this.lowerBound[0] - ray.from[0]) * dirFracX; - var t2 = (this.upperBound[0] - ray.from[0]) * dirFracX; - var t3 = (this.lowerBound[1] - ray.from[1]) * dirFracY; - var t4 = (this.upperBound[1] - ray.from[1]) * dirFracY; - - var tmin = Math.max(Math.max(Math.min(t1, t2), Math.min(t3, t4))); - var tmax = Math.min(Math.min(Math.max(t1, t2), Math.max(t3, t4))); - - // if tmax < 0, ray (line) is intersecting AABB, but whole AABB is behing us - if (tmax < 0){ - //t = tmax; - return -1; - } - - // if tmin > tmax, ray doesn't intersect AABB - if (tmin > tmax){ - //t = tmax; - return -1; - } - - return tmin; -}; -},{"../math/vec2":30,"../utils/Utils":57}],8:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2'); -var Body = _dereq_('../objects/Body'); - -module.exports = Broadphase; - -/** - * Base class for broadphase implementations. - * @class Broadphase - * @constructor - */ -function Broadphase(type){ - - this.type = type; - - /** - * The resulting overlapping pairs. Will be filled with results during .getCollisionPairs(). - * @property result - * @type {Array} - */ - this.result = []; - - /** - * The world to search for collision pairs in. To change it, use .setWorld() - * @property world - * @type {World} - * @readOnly - */ - this.world = null; - - /** - * The bounding volume type to use in the broadphase algorithms. Should be set to Broadphase.AABB or Broadphase.BOUNDING_CIRCLE. - * @property {Number} boundingVolumeType - */ - this.boundingVolumeType = Broadphase.AABB; -} - -/** - * Axis aligned bounding box type. - * @static - * @property {Number} AABB - */ -Broadphase.AABB = 1; - -/** - * Bounding circle type. - * @static - * @property {Number} BOUNDING_CIRCLE - */ -Broadphase.BOUNDING_CIRCLE = 2; - -/** - * Set the world that we are searching for collision pairs in. - * @method setWorld - * @param {World} world - */ -Broadphase.prototype.setWorld = function(world){ - this.world = world; -}; - -/** - * Get all potential intersecting body pairs. - * @method getCollisionPairs - * @param {World} world The world to search in. - * @return {Array} An array of the bodies, ordered in pairs. Example: A result of [a,b,c,d] means that the potential pairs are: (a,b), (c,d). - */ -Broadphase.prototype.getCollisionPairs = function(world){}; - -var dist = vec2.create(); - -/** - * Check whether the bounding radius of two bodies overlap. - * @method boundingRadiusCheck - * @param {Body} bodyA - * @param {Body} bodyB - * @return {Boolean} - */ -Broadphase.boundingRadiusCheck = function(bodyA, bodyB){ - vec2.sub(dist, bodyA.position, bodyB.position); - var d2 = vec2.squaredLength(dist), - r = bodyA.boundingRadius + bodyB.boundingRadius; - return d2 <= r*r; -}; - -/** - * Check whether the bounding radius of two bodies overlap. - * @method boundingRadiusCheck - * @param {Body} bodyA - * @param {Body} bodyB - * @return {Boolean} - */ -Broadphase.aabbCheck = function(bodyA, bodyB){ - return bodyA.getAABB().overlaps(bodyB.getAABB()); -}; - -/** - * Check whether the bounding radius of two bodies overlap. - * @method boundingRadiusCheck - * @param {Body} bodyA - * @param {Body} bodyB - * @return {Boolean} - */ -Broadphase.prototype.boundingVolumeCheck = function(bodyA, bodyB){ - var result; - - switch(this.boundingVolumeType){ - case Broadphase.BOUNDING_CIRCLE: - result = Broadphase.boundingRadiusCheck(bodyA,bodyB); - break; - case Broadphase.AABB: - result = Broadphase.aabbCheck(bodyA,bodyB); - break; - default: - throw new Error('Bounding volume type not recognized: '+this.boundingVolumeType); - } - return result; -}; - -/** - * Check whether two bodies are allowed to collide at all. - * @method canCollide - * @param {Body} bodyA - * @param {Body} bodyB - * @return {Boolean} - */ -Broadphase.canCollide = function(bodyA, bodyB){ - var KINEMATIC = Body.KINEMATIC; - var STATIC = Body.STATIC; - - // Cannot collide static bodies - if(bodyA.type === STATIC && bodyB.type === STATIC){ - return false; - } - - // Cannot collide static vs kinematic bodies - if( (bodyA.type === KINEMATIC && bodyB.type === STATIC) || - (bodyA.type === STATIC && bodyB.type === KINEMATIC)){ - return false; - } - - // Cannot collide kinematic vs kinematic - if(bodyA.type === KINEMATIC && bodyB.type === KINEMATIC){ - return false; - } - - // Cannot collide both sleeping bodies - if(bodyA.sleepState === Body.SLEEPING && bodyB.sleepState === Body.SLEEPING){ - return false; - } - - // Cannot collide if one is static and the other is sleeping - if( (bodyA.sleepState === Body.SLEEPING && bodyB.type === STATIC) || - (bodyB.sleepState === Body.SLEEPING && bodyA.type === STATIC)){ - return false; - } - - return true; -}; - -Broadphase.NAIVE = 1; -Broadphase.SAP = 2; - -},{"../math/vec2":30,"../objects/Body":31}],9:[function(_dereq_,module,exports){ -var Circle = _dereq_('../shapes/Circle'), - Plane = _dereq_('../shapes/Plane'), - Shape = _dereq_('../shapes/Shape'), - Particle = _dereq_('../shapes/Particle'), - Broadphase = _dereq_('../collision/Broadphase'), - vec2 = _dereq_('../math/vec2'); - -module.exports = NaiveBroadphase; - -/** - * Naive broadphase implementation. Does N^2 tests. - * - * @class NaiveBroadphase - * @constructor - * @extends Broadphase - */ -function NaiveBroadphase(){ - Broadphase.call(this, Broadphase.NAIVE); -} -NaiveBroadphase.prototype = new Broadphase(); -NaiveBroadphase.prototype.constructor = NaiveBroadphase; - -/** - * Get the colliding pairs - * @method getCollisionPairs - * @param {World} world - * @return {Array} - */ -NaiveBroadphase.prototype.getCollisionPairs = function(world){ - var bodies = world.bodies, - result = this.result; - - result.length = 0; - - for(var i=0, Ncolliding=bodies.length; i!==Ncolliding; i++){ - var bi = bodies[i]; - - for(var j=0; j pos0 && pos < pos1){ - // We got contact! - - if(justTest){ - return true; - } - - var c = this.createContactEquation(circleBody,lineBody,circleShape,lineShape); - - vec2.scale(c.normalA, orthoDist, -1); - vec2.normalize(c.normalA, c.normalA); - - vec2.scale( c.contactPointA, c.normalA, circleRadius); - add(c.contactPointA, c.contactPointA, circleOffset); - sub(c.contactPointA, c.contactPointA, circleBody.position); - - sub(c.contactPointB, projectedPoint, lineOffset); - add(c.contactPointB, c.contactPointB, lineOffset); - sub(c.contactPointB, c.contactPointB, lineBody.position); - - this.contactEquations.push(c); - - if(this.enableFriction){ - this.frictionEquations.push(this.createFrictionFromContact(c)); - } - - return 1; - } - } - - // Add corner - verts[0] = worldVertex0; - verts[1] = worldVertex1; - - for(var i=0; i 0){ - for(var i=0; i Math.pow(r,2)){ - return 0; - } - - if(justTest){ - return true; - } - - var c = this.createContactEquation(bodyA,bodyB,shapeA,shapeB); - sub(c.normalA, offsetB, offsetA); - vec2.normalize(c.normalA,c.normalA); - - vec2.scale( c.contactPointA, c.normalA, radiusA); - vec2.scale( c.contactPointB, c.normalA, -radiusB); - - add(c.contactPointA, c.contactPointA, offsetA); - sub(c.contactPointA, c.contactPointA, bodyA.position); - - add(c.contactPointB, c.contactPointB, offsetB); - sub(c.contactPointB, c.contactPointB, bodyB.position); - - this.contactEquations.push(c); - - if(this.enableFriction){ - this.frictionEquations.push(this.createFrictionFromContact(c)); - } - return 1; -}; - -/** - * Plane/Convex Narrowphase - * @method planeConvex - * @param {Body} planeBody - * @param {Plane} planeShape - * @param {Array} planeOffset - * @param {Number} planeAngle - * @param {Body} convexBody - * @param {Convex} convexShape - * @param {Array} convexOffset - * @param {Number} convexAngle - * @param {Boolean} justTest - */ -Narrowphase.prototype[Shape.PLANE | Shape.CONVEX] = -Narrowphase.prototype[Shape.PLANE | Shape.BOX] = -Narrowphase.prototype.planeConvex = function( - planeBody, - planeShape, - planeOffset, - planeAngle, - convexBody, - convexShape, - convexOffset, - convexAngle, - justTest -){ - var worldVertex = tmp1, - worldNormal = tmp2, - dist = tmp3; - - var numReported = 0; - vec2.rotate(worldNormal, yAxis, planeAngle); - - for(var i=0; i!==convexShape.vertices.length; i++){ - var v = convexShape.vertices[i]; - vec2.rotate(worldVertex, v, convexAngle); - add(worldVertex, worldVertex, convexOffset); - - sub(dist, worldVertex, planeOffset); - - if(dot(dist,worldNormal) <= 0){ - - if(justTest){ - return true; - } - - // Found vertex - numReported++; - - var c = this.createContactEquation(planeBody,convexBody,planeShape,convexShape); - - sub(dist, worldVertex, planeOffset); - - vec2.copy(c.normalA, worldNormal); - - var d = dot(dist, c.normalA); - vec2.scale(dist, c.normalA, d); - - // rj is from convex center to contact - sub(c.contactPointB, worldVertex, convexBody.position); - - - // ri is from plane center to contact - sub( c.contactPointA, worldVertex, dist); - sub( c.contactPointA, c.contactPointA, planeBody.position); - - this.contactEquations.push(c); - - if(!this.enableFrictionReduction){ - if(this.enableFriction){ - this.frictionEquations.push(this.createFrictionFromContact(c)); - } - } - } - } - - if(this.enableFrictionReduction){ - if(this.enableFriction && numReported){ - this.frictionEquations.push(this.createFrictionFromAverage(numReported)); - } - } - - return numReported; -}; - -/** - * Narrowphase for particle vs plane - * @method particlePlane - * @param {Body} particleBody - * @param {Particle} particleShape - * @param {Array} particleOffset - * @param {Number} particleAngle - * @param {Body} planeBody - * @param {Plane} planeShape - * @param {Array} planeOffset - * @param {Number} planeAngle - * @param {Boolean} justTest - */ -Narrowphase.prototype[Shape.PARTICLE | Shape.PLANE] = -Narrowphase.prototype.particlePlane = function( - particleBody, - particleShape, - particleOffset, - particleAngle, - planeBody, - planeShape, - planeOffset, - planeAngle, - justTest -){ - var dist = tmp1, - worldNormal = tmp2; - - planeAngle = planeAngle || 0; - - sub(dist, particleOffset, planeOffset); - vec2.rotate(worldNormal, yAxis, planeAngle); - - var d = dot(dist, worldNormal); - - if(d > 0){ - return 0; - } - if(justTest){ - return true; - } - - var c = this.createContactEquation(planeBody,particleBody,planeShape,particleShape); - - vec2.copy(c.normalA, worldNormal); - vec2.scale( dist, c.normalA, d ); - // dist is now the distance vector in the normal direction - - // ri is the particle position projected down onto the plane, from the plane center - sub( c.contactPointA, particleOffset, dist); - sub( c.contactPointA, c.contactPointA, planeBody.position); - - // rj is from the body center to the particle center - sub( c.contactPointB, particleOffset, particleBody.position ); - - this.contactEquations.push(c); - - if(this.enableFriction){ - this.frictionEquations.push(this.createFrictionFromContact(c)); - } - return 1; -}; - -/** - * Circle/Particle Narrowphase - * @method circleParticle - * @param {Body} circleBody - * @param {Circle} circleShape - * @param {Array} circleOffset - * @param {Number} circleAngle - * @param {Body} particleBody - * @param {Particle} particleShape - * @param {Array} particleOffset - * @param {Number} particleAngle - * @param {Boolean} justTest - */ -Narrowphase.prototype[Shape.CIRCLE | Shape.PARTICLE] = -Narrowphase.prototype.circleParticle = function( - circleBody, - circleShape, - circleOffset, - circleAngle, - particleBody, - particleShape, - particleOffset, - particleAngle, - justTest -){ - var dist = tmp1; - - sub(dist, particleOffset, circleOffset); - if(vec2.squaredLength(dist) > Math.pow(circleShape.radius, 2)){ - return 0; - } - if(justTest){ - return true; - } - - var c = this.createContactEquation(circleBody,particleBody,circleShape,particleShape); - vec2.copy(c.normalA, dist); - vec2.normalize(c.normalA,c.normalA); - - // Vector from circle to contact point is the normal times the circle radius - vec2.scale(c.contactPointA, c.normalA, circleShape.radius); - add(c.contactPointA, c.contactPointA, circleOffset); - sub(c.contactPointA, c.contactPointA, circleBody.position); - - // Vector from particle center to contact point is zero - sub(c.contactPointB, particleOffset, particleBody.position); - - this.contactEquations.push(c); - - if(this.enableFriction){ - this.frictionEquations.push(this.createFrictionFromContact(c)); - } - - return 1; -}; - -var planeCapsule_tmpCircle = new Circle({ radius: 1 }), - planeCapsule_tmp1 = vec2.create(), - planeCapsule_tmp2 = vec2.create(), - planeCapsule_tmp3 = vec2.create(); - -/** - * @method planeCapsule - * @param {Body} planeBody - * @param {Circle} planeShape - * @param {Array} planeOffset - * @param {Number} planeAngle - * @param {Body} capsuleBody - * @param {Particle} capsuleShape - * @param {Array} capsuleOffset - * @param {Number} capsuleAngle - * @param {Boolean} justTest - */ -Narrowphase.prototype[Shape.PLANE | Shape.CAPSULE] = -Narrowphase.prototype.planeCapsule = function( - planeBody, - planeShape, - planeOffset, - planeAngle, - capsuleBody, - capsuleShape, - capsuleOffset, - capsuleAngle, - justTest -){ - var end1 = planeCapsule_tmp1, - end2 = planeCapsule_tmp2, - circle = planeCapsule_tmpCircle, - dst = planeCapsule_tmp3; - - // Compute world end positions - vec2.set(end1, -capsuleShape.length/2, 0); - vec2.rotate(end1,end1,capsuleAngle); - add(end1,end1,capsuleOffset); - - vec2.set(end2, capsuleShape.length/2, 0); - vec2.rotate(end2,end2,capsuleAngle); - add(end2,end2,capsuleOffset); - - circle.radius = capsuleShape.radius; - - var enableFrictionBefore; - - // Temporarily turn off friction - if(this.enableFrictionReduction){ - enableFrictionBefore = this.enableFriction; - this.enableFriction = false; - } - - // Do Narrowphase as two circles - var numContacts1 = this.circlePlane(capsuleBody,circle,end1,0, planeBody,planeShape,planeOffset,planeAngle, justTest), - numContacts2 = this.circlePlane(capsuleBody,circle,end2,0, planeBody,planeShape,planeOffset,planeAngle, justTest); - - // Restore friction - if(this.enableFrictionReduction){ - this.enableFriction = enableFrictionBefore; - } - - if(justTest){ - return numContacts1 || numContacts2; - } else { - var numTotal = numContacts1 + numContacts2; - if(this.enableFrictionReduction){ - if(numTotal){ - this.frictionEquations.push(this.createFrictionFromAverage(numTotal)); - } - } - return numTotal; - } -}; - -/** - * Creates ContactEquations and FrictionEquations for a collision. - * @method circlePlane - * @param {Body} bi The first body that should be connected to the equations. - * @param {Circle} si The circle shape participating in the collision. - * @param {Array} xi Extra offset to take into account for the Shape, in addition to the one in circleBody.position. Will *not* be rotated by circleBody.angle (maybe it should, for sake of homogenity?). Set to null if none. - * @param {Body} bj The second body that should be connected to the equations. - * @param {Plane} sj The Plane shape that is participating - * @param {Array} xj Extra offset for the plane shape. - * @param {Number} aj Extra angle to apply to the plane - */ -Narrowphase.prototype[Shape.CIRCLE | Shape.PLANE] = -Narrowphase.prototype.circlePlane = function( bi,si,xi,ai, bj,sj,xj,aj, justTest ){ - var circleBody = bi, - circleShape = si, - circleOffset = xi, // Offset from body center, rotated! - planeBody = bj, - shapeB = sj, - planeOffset = xj, - planeAngle = aj; - - planeAngle = planeAngle || 0; - - // Vector from plane to circle - var planeToCircle = tmp1, - worldNormal = tmp2, - temp = tmp3; - - sub(planeToCircle, circleOffset, planeOffset); - - // World plane normal - vec2.rotate(worldNormal, yAxis, planeAngle); - - // Normal direction distance - var d = dot(worldNormal, planeToCircle); - - if(d > circleShape.radius){ - return 0; // No overlap. Abort. - } - - if(justTest){ - return true; - } - - // Create contact - var contact = this.createContactEquation(planeBody,circleBody,sj,si); - - // ni is the plane world normal - vec2.copy(contact.normalA, worldNormal); - - // rj is the vector from circle center to the contact point - vec2.scale(contact.contactPointB, contact.normalA, -circleShape.radius); - add(contact.contactPointB, contact.contactPointB, circleOffset); - sub(contact.contactPointB, contact.contactPointB, circleBody.position); - - // ri is the distance from plane center to contact. - vec2.scale(temp, contact.normalA, d); - sub(contact.contactPointA, planeToCircle, temp ); // Subtract normal distance vector from the distance vector - add(contact.contactPointA, contact.contactPointA, planeOffset); - sub(contact.contactPointA, contact.contactPointA, planeBody.position); - - this.contactEquations.push(contact); - - if(this.enableFriction){ - this.frictionEquations.push( this.createFrictionFromContact(contact) ); - } - - return 1; -}; - -/** - * Convex/convex Narrowphase.See this article for more info. - * @method convexConvex - * @param {Body} bi - * @param {Convex} si - * @param {Array} xi - * @param {Number} ai - * @param {Body} bj - * @param {Convex} sj - * @param {Array} xj - * @param {Number} aj - */ -Narrowphase.prototype[Shape.CONVEX] = -Narrowphase.prototype[Shape.CONVEX | Shape.BOX] = -Narrowphase.prototype[Shape.BOX] = -Narrowphase.prototype.convexConvex = function( bi,si,xi,ai, bj,sj,xj,aj, justTest, precision ){ - var sepAxis = tmp1, - worldPoint = tmp2, - worldPoint0 = tmp3, - worldPoint1 = tmp4, - worldEdge = tmp5, - projected = tmp6, - penetrationVec = tmp7, - dist = tmp8, - worldNormal = tmp9, - numContacts = 0, - precision = typeof(precision) === 'number' ? precision : 0; - - var found = Narrowphase.findSeparatingAxis(si,xi,ai,sj,xj,aj,sepAxis); - if(!found){ - return 0; - } - - // Make sure the separating axis is directed from shape i to shape j - sub(dist,xj,xi); - if(dot(sepAxis,dist) > 0){ - vec2.scale(sepAxis,sepAxis,-1); - } - - // Find edges with normals closest to the separating axis - var closestEdge1 = Narrowphase.getClosestEdge(si,ai,sepAxis,true), // Flipped axis - closestEdge2 = Narrowphase.getClosestEdge(sj,aj,sepAxis); - - if(closestEdge1 === -1 || closestEdge2 === -1){ - return 0; - } - - // Loop over the shapes - for(var k=0; k<2; k++){ - - var closestEdgeA = closestEdge1, - closestEdgeB = closestEdge2, - shapeA = si, shapeB = sj, - offsetA = xi, offsetB = xj, - angleA = ai, angleB = aj, - bodyA = bi, bodyB = bj; - - if(k === 0){ - // Swap! - var tmp; - tmp = closestEdgeA; - closestEdgeA = closestEdgeB; - closestEdgeB = tmp; - - tmp = shapeA; - shapeA = shapeB; - shapeB = tmp; - - tmp = offsetA; - offsetA = offsetB; - offsetB = tmp; - - tmp = angleA; - angleA = angleB; - angleB = tmp; - - tmp = bodyA; - bodyA = bodyB; - bodyB = tmp; - } - - // Loop over 2 points in convex B - for(var j=closestEdgeB; j= 3){ - - if(justTest){ - return true; - } - - // worldPoint was on the "inside" side of each of the 3 checked edges. - // Project it to the center edge and use the projection direction as normal - - // Create contact - var c = this.createContactEquation(bodyA,bodyB,shapeA,shapeB); - numContacts++; - - // Get center edge from body A - var v0 = shapeA.vertices[(closestEdgeA) % shapeA.vertices.length], - v1 = shapeA.vertices[(closestEdgeA+1) % shapeA.vertices.length]; - - // Construct the edge - vec2.rotate(worldPoint0, v0, angleA); - vec2.rotate(worldPoint1, v1, angleA); - add(worldPoint0, worldPoint0, offsetA); - add(worldPoint1, worldPoint1, offsetA); - - sub(worldEdge, worldPoint1, worldPoint0); - - vec2.rotate90cw(c.normalA, worldEdge); // Normal points out of convex A - vec2.normalize(c.normalA,c.normalA); - - sub(dist, worldPoint, worldPoint0); // From edge point to the penetrating point - var d = dot(c.normalA,dist); // Penetration - vec2.scale(penetrationVec, c.normalA, d); // Vector penetration - - sub(c.contactPointA, worldPoint, offsetA); - sub(c.contactPointA, c.contactPointA, penetrationVec); - add(c.contactPointA, c.contactPointA, offsetA); - sub(c.contactPointA, c.contactPointA, bodyA.position); - - sub(c.contactPointB, worldPoint, offsetB); - add(c.contactPointB, c.contactPointB, offsetB); - sub(c.contactPointB, c.contactPointB, bodyB.position); - - this.contactEquations.push(c); - - // Todo reduce to 1 friction equation if we have 2 contact points - if(!this.enableFrictionReduction){ - if(this.enableFriction){ - this.frictionEquations.push(this.createFrictionFromContact(c)); - } - } - } - } - } - - if(this.enableFrictionReduction){ - if(this.enableFriction && numContacts){ - this.frictionEquations.push(this.createFrictionFromAverage(numContacts)); - } - } - - return numContacts; -}; - -// .projectConvex is called by other functions, need local tmp vectors -var pcoa_tmp1 = vec2.fromValues(0,0); - -/** - * Project a Convex onto a world-oriented axis - * @method projectConvexOntoAxis - * @static - * @param {Convex} convexShape - * @param {Array} convexOffset - * @param {Number} convexAngle - * @param {Array} worldAxis - * @param {Array} result - */ -Narrowphase.projectConvexOntoAxis = function(convexShape, convexOffset, convexAngle, worldAxis, result){ - var max=null, - min=null, - v, - value, - localAxis = pcoa_tmp1; - - // Convert the axis to local coords of the body - vec2.rotate(localAxis, worldAxis, -convexAngle); - - // Get projected position of all vertices - for(var i=0; i max){ - max = value; - } - if(min === null || value < min){ - min = value; - } - } - - if(min > max){ - var t = min; - min = max; - max = t; - } - - // Project the position of the body onto the axis - need to add this to the result - var offset = dot(convexOffset, worldAxis); - - vec2.set( result, min + offset, max + offset); -}; - -// .findSeparatingAxis is called by other functions, need local tmp vectors -var fsa_tmp1 = vec2.fromValues(0,0) -, fsa_tmp2 = vec2.fromValues(0,0) -, fsa_tmp3 = vec2.fromValues(0,0) -, fsa_tmp4 = vec2.fromValues(0,0) -, fsa_tmp5 = vec2.fromValues(0,0) -, fsa_tmp6 = vec2.fromValues(0,0); - -/** - * Find a separating axis between the shapes, that maximizes the separating distance between them. - * @method findSeparatingAxis - * @static - * @param {Convex} c1 - * @param {Array} offset1 - * @param {Number} angle1 - * @param {Convex} c2 - * @param {Array} offset2 - * @param {Number} angle2 - * @param {Array} sepAxis The resulting axis - * @return {Boolean} Whether the axis could be found. - */ -Narrowphase.findSeparatingAxis = function(c1,offset1,angle1,c2,offset2,angle2,sepAxis){ - var maxDist = null, - overlap = false, - found = false, - edge = fsa_tmp1, - worldPoint0 = fsa_tmp2, - worldPoint1 = fsa_tmp3, - normal = fsa_tmp4, - span1 = fsa_tmp5, - span2 = fsa_tmp6; - - if(c1 instanceof Box && c2 instanceof Box){ - - for(var j=0; j!==2; j++){ - var c = c1, - angle = angle1; - if(j===1){ - c = c2; - angle = angle2; - } - - for(var i=0; i!==2; i++){ - - // Get the world edge - if(i === 0){ - vec2.set(normal, 0, 1); - } else if(i === 1) { - vec2.set(normal, 1, 0); - } - if(angle !== 0){ - vec2.rotate(normal, normal, angle); - } - - // Project hulls onto that normal - Narrowphase.projectConvexOntoAxis(c1,offset1,angle1,normal,span1); - Narrowphase.projectConvexOntoAxis(c2,offset2,angle2,normal,span2); - - // Order by span position - var a=span1, - b=span2, - swapped = false; - if(span1[0] > span2[0]){ - b=span1; - a=span2; - swapped = true; - } - - // Get separating distance - var dist = b[0] - a[1]; - overlap = (dist <= 0); - - if(maxDist===null || dist > maxDist){ - vec2.copy(sepAxis, normal); - maxDist = dist; - found = overlap; - } - } - } - - } else { - - for(var j=0; j!==2; j++){ - var c = c1, - angle = angle1; - if(j===1){ - c = c2; - angle = angle2; - } - - for(var i=0; i!==c.vertices.length; i++){ - // Get the world edge - vec2.rotate(worldPoint0, c.vertices[i], angle); - vec2.rotate(worldPoint1, c.vertices[(i+1)%c.vertices.length], angle); - - sub(edge, worldPoint1, worldPoint0); - - // Get normal - just rotate 90 degrees since vertices are given in CCW - vec2.rotate90cw(normal, edge); - vec2.normalize(normal,normal); - - // Project hulls onto that normal - Narrowphase.projectConvexOntoAxis(c1,offset1,angle1,normal,span1); - Narrowphase.projectConvexOntoAxis(c2,offset2,angle2,normal,span2); - - // Order by span position - var a=span1, - b=span2, - swapped = false; - if(span1[0] > span2[0]){ - b=span1; - a=span2; - swapped = true; - } - - // Get separating distance - var dist = b[0] - a[1]; - overlap = (dist <= 0); - - if(maxDist===null || dist > maxDist){ - vec2.copy(sepAxis, normal); - maxDist = dist; - found = overlap; - } - } - } - } - - - /* - // Needs to be tested some more - for(var j=0; j!==2; j++){ - var c = c1, - angle = angle1; - if(j===1){ - c = c2; - angle = angle2; - } - - for(var i=0; i!==c.axes.length; i++){ - - var normal = c.axes[i]; - - // Project hulls onto that normal - Narrowphase.projectConvexOntoAxis(c1, offset1, angle1, normal, span1); - Narrowphase.projectConvexOntoAxis(c2, offset2, angle2, normal, span2); - - // Order by span position - var a=span1, - b=span2, - swapped = false; - if(span1[0] > span2[0]){ - b=span1; - a=span2; - swapped = true; - } - - // Get separating distance - var dist = b[0] - a[1]; - overlap = (dist <= Narrowphase.convexPrecision); - - if(maxDist===null || dist > maxDist){ - vec2.copy(sepAxis, normal); - maxDist = dist; - found = overlap; - } - } - } - */ - - return found; -}; - -// .getClosestEdge is called by other functions, need local tmp vectors -var gce_tmp1 = vec2.fromValues(0,0) -, gce_tmp2 = vec2.fromValues(0,0) -, gce_tmp3 = vec2.fromValues(0,0); - -/** - * Get the edge that has a normal closest to an axis. - * @method getClosestEdge - * @static - * @param {Convex} c - * @param {Number} angle - * @param {Array} axis - * @param {Boolean} flip - * @return {Number} Index of the edge that is closest. This index and the next spans the resulting edge. Returns -1 if failed. - */ -Narrowphase.getClosestEdge = function(c,angle,axis,flip){ - var localAxis = gce_tmp1, - edge = gce_tmp2, - normal = gce_tmp3; - - // Convert the axis to local coords of the body - vec2.rotate(localAxis, axis, -angle); - if(flip){ - vec2.scale(localAxis,localAxis,-1); - } - - var closestEdge = -1, - N = c.vertices.length, - maxDot = -1; - for(var i=0; i!==N; i++){ - // Get the edge - sub(edge, c.vertices[(i+1)%N], c.vertices[i%N]); - - // Get normal - just rotate 90 degrees since vertices are given in CCW - vec2.rotate90cw(normal, edge); - vec2.normalize(normal,normal); - - var d = dot(normal,localAxis); - if(closestEdge === -1 || d > maxDot){ - closestEdge = i % N; - maxDot = d; - } - } - - return closestEdge; -}; - -var circleHeightfield_candidate = vec2.create(), - circleHeightfield_dist = vec2.create(), - circleHeightfield_v0 = vec2.create(), - circleHeightfield_v1 = vec2.create(), - circleHeightfield_minCandidate = vec2.create(), - circleHeightfield_worldNormal = vec2.create(), - circleHeightfield_minCandidateNormal = vec2.create(); - -/** - * @method circleHeightfield - * @param {Body} bi - * @param {Circle} si - * @param {Array} xi - * @param {Body} bj - * @param {Heightfield} sj - * @param {Array} xj - * @param {Number} aj - */ -Narrowphase.prototype[Shape.CIRCLE | Shape.HEIGHTFIELD] = -Narrowphase.prototype.circleHeightfield = function( circleBody,circleShape,circlePos,circleAngle, - hfBody,hfShape,hfPos,hfAngle, justTest, radius ){ - var data = hfShape.heights, - radius = radius || circleShape.radius, - w = hfShape.elementWidth, - dist = circleHeightfield_dist, - candidate = circleHeightfield_candidate, - minCandidate = circleHeightfield_minCandidate, - minCandidateNormal = circleHeightfield_minCandidateNormal, - worldNormal = circleHeightfield_worldNormal, - v0 = circleHeightfield_v0, - v1 = circleHeightfield_v1; - - // Get the index of the points to test against - var idxA = Math.floor( (circlePos[0] - radius - hfPos[0]) / w ), - idxB = Math.ceil( (circlePos[0] + radius - hfPos[0]) / w ); - - /*if(idxB < 0 || idxA >= data.length) - return justTest ? false : 0;*/ - - if(idxA < 0){ - idxA = 0; - } - if(idxB >= data.length){ - idxB = data.length-1; - } - - // Get max and min - var max = data[idxA], - min = data[idxB]; - for(var i=idxA; i max){ - max = data[i]; - } - } - - if(circlePos[1]-radius > max){ - return justTest ? false : 0; - } - - /* - if(circlePos[1]+radius < min){ - // Below the minimum point... We can just guess. - // TODO - } - */ - - // 1. Check so center of circle is not inside the field. If it is, this wont work... - // 2. For each edge - // 2. 1. Get point on circle that is closest to the edge (scale normal with -radius) - // 2. 2. Check if point is inside. - - var found = false; - - // Check all edges first - for(var i=idxA; i= v0[0] && candidate[0] < v1[0] && d <= 0){ - - if(justTest){ - return true; - } - - found = true; - - // Store the candidate point, projected to the edge - vec2.scale(dist,worldNormal,-d); - vec2.add(minCandidate,candidate,dist); - vec2.copy(minCandidateNormal,worldNormal); - - var c = this.createContactEquation(hfBody,circleBody,hfShape,circleShape); - - // Normal is out of the heightfield - vec2.copy(c.normalA, minCandidateNormal); - - // Vector from circle to heightfield - vec2.scale(c.contactPointB, c.normalA, -radius); - add(c.contactPointB, c.contactPointB, circlePos); - sub(c.contactPointB, c.contactPointB, circleBody.position); - - vec2.copy(c.contactPointA, minCandidate); - vec2.sub(c.contactPointA, c.contactPointA, hfBody.position); - - this.contactEquations.push(c); - - if(this.enableFriction){ - this.frictionEquations.push( this.createFrictionFromContact(c) ); - } - } - } - - // Check all vertices - found = false; - if(radius > 0){ - for(var i=idxA; i<=idxB; i++){ - - // Get point - vec2.set(v0, i*w, data[i]); - vec2.add(v0,v0,hfPos); - - vec2.sub(dist, circlePos, v0); - - if(vec2.squaredLength(dist) < Math.pow(radius, 2)){ - - if(justTest){ - return true; - } - - found = true; - - var c = this.createContactEquation(hfBody,circleBody,hfShape,circleShape); - - // Construct normal - out of heightfield - vec2.copy(c.normalA, dist); - vec2.normalize(c.normalA,c.normalA); - - vec2.scale(c.contactPointB, c.normalA, -radius); - add(c.contactPointB, c.contactPointB, circlePos); - sub(c.contactPointB, c.contactPointB, circleBody.position); - - sub(c.contactPointA, v0, hfPos); - add(c.contactPointA, c.contactPointA, hfPos); - sub(c.contactPointA, c.contactPointA, hfBody.position); - - this.contactEquations.push(c); - - if(this.enableFriction){ - this.frictionEquations.push(this.createFrictionFromContact(c)); - } - } - } - } - - if(found){ - return 1; - } - - return 0; - -}; - -var convexHeightfield_v0 = vec2.create(), - convexHeightfield_v1 = vec2.create(), - convexHeightfield_tilePos = vec2.create(), - convexHeightfield_tempConvexShape = new Convex({ vertices: [vec2.create(),vec2.create(),vec2.create(),vec2.create()] }); -/** - * @method circleHeightfield - * @param {Body} bi - * @param {Circle} si - * @param {Array} xi - * @param {Body} bj - * @param {Heightfield} sj - * @param {Array} xj - * @param {Number} aj - */ -Narrowphase.prototype[Shape.BOX | Shape.HEIGHTFIELD] = -Narrowphase.prototype[Shape.CONVEX | Shape.HEIGHTFIELD] = -Narrowphase.prototype.convexHeightfield = function( convexBody,convexShape,convexPos,convexAngle, - hfBody,hfShape,hfPos,hfAngle, justTest ){ - var data = hfShape.heights, - w = hfShape.elementWidth, - v0 = convexHeightfield_v0, - v1 = convexHeightfield_v1, - tilePos = convexHeightfield_tilePos, - tileConvex = convexHeightfield_tempConvexShape; - - // Get the index of the points to test against - var idxA = Math.floor( (convexBody.aabb.lowerBound[0] - hfPos[0]) / w ), - idxB = Math.ceil( (convexBody.aabb.upperBound[0] - hfPos[0]) / w ); - - if(idxA < 0){ - idxA = 0; - } - if(idxB >= data.length){ - idxB = data.length-1; - } - - // Get max and min - var max = data[idxA], - min = data[idxB]; - for(var i=idxA; i max){ - max = data[i]; - } - } - - if(convexBody.aabb.lowerBound[1] > max){ - return justTest ? false : 0; - } - - var found = false; - var numContacts = 0; - - // Loop over all edges - // TODO: If possible, construct a convex from several data points (need o check if the points make a convex shape) - for(var i=idxA; i= 0 || aabb.containsPoint(this.from)){ - this.intersectBody(result, body); - } - } -}; - -var intersectBody_worldPosition = vec2.create(); - -/** - * Shoot a ray at a body, get back information about the hit. - * @method intersectBody - * @private - * @param {Body} body - */ -Ray.prototype.intersectBody = function (result, body) { - var checkCollisionResponse = this.checkCollisionResponse; - - if(checkCollisionResponse && !body.collisionResponse){ - return; - } - - var worldPosition = intersectBody_worldPosition; - - for (var i = 0, N = body.shapes.length; i < N; i++) { - var shape = body.shapes[i]; - - if(checkCollisionResponse && !shape.collisionResponse){ - continue; // Skip - } - - if((this.collisionGroup & shape.collisionMask) === 0 || (shape.collisionGroup & this.collisionMask) === 0){ - continue; - } - - // Get world angle and position of the shape - vec2.rotate(worldPosition, shape.position, body.angle); - vec2.add(worldPosition, worldPosition, body.position); - var worldAngle = shape.angle + body.angle; - - this.intersectShape( - result, - shape, - worldAngle, - worldPosition, - body - ); - - if(result.shouldStop(this)){ - break; - } - } -}; - -/** - * @method intersectShape - * @private - * @param {Shape} shape - * @param {number} angle - * @param {array} position - * @param {Body} body - */ -Ray.prototype.intersectShape = function(result, shape, angle, position, body){ - var from = this.from; - - // Checking radius - var distance = distanceFromIntersectionSquared(from, this.direction, position); - if (distance > shape.boundingRadius * shape.boundingRadius) { - return; - } - - this._currentBody = body; - this._currentShape = shape; - - shape.raycast(result, this, position, angle); - - this._currentBody = this._currentShape = null; -}; - -/** - * Get the AABB of the ray. - * @method getAABB - * @param {AABB} aabb - */ -Ray.prototype.getAABB = function(result){ - var to = this.to; - var from = this.from; - vec2.set( - result.lowerBound, - Math.min(to[0], from[0]), - Math.min(to[1], from[1]) - ); - vec2.set( - result.upperBound, - Math.max(to[0], from[0]), - Math.max(to[1], from[1]) - ); -}; - -var hitPointWorld = vec2.create(); - -/** - * @method reportIntersection - * @private - * @param {number} fraction - * @param {array} normal - * @param {number} [faceIndex=-1] - * @return {boolean} True if the intersections should continue - */ -Ray.prototype.reportIntersection = function(result, fraction, normal, faceIndex){ - var from = this.from; - var to = this.to; - var shape = this._currentShape; - var body = this._currentBody; - - // Skip back faces? - if(this.skipBackfaces && vec2.dot(normal, this.direction) > 0){ - return; - } - - switch(this.mode){ - - case Ray.ALL: - result.set( - normal, - shape, - body, - fraction, - faceIndex - ); - this.callback(result); - break; - - case Ray.CLOSEST: - - // Store if closer than current closest - if(fraction < result.fraction || !result.hasHit()){ - result.set( - normal, - shape, - body, - fraction, - faceIndex - ); - } - break; - - case Ray.ANY: - - // Report and stop. - result.set( - normal, - shape, - body, - fraction, - faceIndex - ); - break; - } -}; - -var v0 = vec2.create(), - intersect = vec2.create(); -function distanceFromIntersectionSquared(from, direction, position) { - - // v0 is vector from from to position - vec2.sub(v0, position, from); - var dot = vec2.dot(v0, direction); - - // intersect = direction * dot + from - vec2.scale(intersect, direction, dot); - vec2.add(intersect, intersect, from); - - return vec2.squaredDistance(position, intersect); -} - - -},{"../collision/AABB":7,"../collision/RaycastResult":12,"../math/vec2":30,"../shapes/Shape":45}],12:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2'); -var Ray = _dereq_('../collision/Ray'); - -module.exports = RaycastResult; - -/** - * Storage for Ray casting hit data. - * @class RaycastResult - * @constructor - */ -function RaycastResult(){ - - /** - * The normal of the hit, oriented in world space. - * @property {array} normal - */ - this.normal = vec2.create(); - - /** - * The hit shape, or null. - * @property {Shape} shape - */ - this.shape = null; - - /** - * The hit body, or null. - * @property {Body} body - */ - this.body = null; - - /** - * The index of the hit triangle, if the hit shape was indexable. - * @property {number} faceIndex - * @default -1 - */ - this.faceIndex = -1; - - /** - * Distance to the hit, as a fraction. 0 is at the "from" point, 1 is at the "to" point. Will be set to -1 if there was no hit yet. - * @property {number} fraction - * @default -1 - */ - this.fraction = -1; - - /** - * If the ray should stop traversing. - * @readonly - * @property {Boolean} isStopped - */ - this.isStopped = false; -} - -/** - * Reset all result data. Must be done before re-using the result object. - * @method reset - */ -RaycastResult.prototype.reset = function () { - vec2.set(this.normal, 0, 0); - this.shape = null; - this.body = null; - this.faceIndex = -1; - this.fraction = -1; - this.isStopped = false; -}; - -/** - * Get the distance to the hit point. - * @method getHitDistance - * @param {Ray} ray - */ -RaycastResult.prototype.getHitDistance = function (ray) { - return vec2.distance(ray.from, ray.to) * this.fraction; -}; - -/** - * Returns true if the ray hit something since the last reset(). - * @method hasHit - */ -RaycastResult.prototype.hasHit = function () { - return this.fraction !== -1; -}; - -/** - * Get world hit point. - * @method getHitPoint - * @param {array} out - * @param {Ray} ray - */ -RaycastResult.prototype.getHitPoint = function (out, ray) { - vec2.lerp(out, ray.from, ray.to, this.fraction); -}; - -/** - * Can be called while iterating over hits to stop searching for hit points. - * @method stop - */ -RaycastResult.prototype.stop = function(){ - this.isStopped = true; -}; - -/** - * @method shouldStop - * @private - * @param {Ray} ray - * @return {boolean} - */ -RaycastResult.prototype.shouldStop = function(ray){ - return this.isStopped || (this.fraction !== -1 && ray.mode === Ray.ANY); -}; - -/** - * @method set - * @private - * @param {array} normal - * @param {Shape} shape - * @param {Body} body - * @param {number} fraction - */ -RaycastResult.prototype.set = function( - normal, - shape, - body, - fraction, - faceIndex -){ - vec2.copy(this.normal, normal); - this.shape = shape; - this.body = body; - this.fraction = fraction; - this.faceIndex = faceIndex; -}; -},{"../collision/Ray":11,"../math/vec2":30}],13:[function(_dereq_,module,exports){ -var Utils = _dereq_('../utils/Utils') -, Broadphase = _dereq_('../collision/Broadphase'); - -module.exports = SAPBroadphase; - -/** - * Sweep and prune broadphase along one axis. - * - * @class SAPBroadphase - * @constructor - * @extends Broadphase - */ -function SAPBroadphase(){ - Broadphase.call(this,Broadphase.SAP); - - /** - * List of bodies currently in the broadphase. - * @property axisList - * @type {Array} - */ - this.axisList = []; - - /** - * The axis to sort along. 0 means x-axis and 1 y-axis. If your bodies are more spread out over the X axis, set axisIndex to 0, and you will gain some performance. - * @property axisIndex - * @type {Number} - */ - this.axisIndex = 0; - - var that = this; - this._addBodyHandler = function(e){ - that.axisList.push(e.body); - }; - - this._removeBodyHandler = function(e){ - // Remove from list - var idx = that.axisList.indexOf(e.body); - if(idx !== -1){ - that.axisList.splice(idx,1); - } - }; -} -SAPBroadphase.prototype = new Broadphase(); -SAPBroadphase.prototype.constructor = SAPBroadphase; - -/** - * Change the world - * @method setWorld - * @param {World} world - */ -SAPBroadphase.prototype.setWorld = function(world){ - // Clear the old axis array - this.axisList.length = 0; - - // Add all bodies from the new world - Utils.appendArray(this.axisList, world.bodies); - - // Remove old handlers, if any - world - .off("addBody",this._addBodyHandler) - .off("removeBody",this._removeBodyHandler); - - // Add handlers to update the list of bodies. - world.on("addBody",this._addBodyHandler).on("removeBody",this._removeBodyHandler); - - this.world = world; -}; - -/** - * Sorts bodies along an axis. - * @method sortAxisList - * @param {Array} a - * @param {number} axisIndex - * @return {Array} - */ -SAPBroadphase.sortAxisList = function(a, axisIndex){ - axisIndex = axisIndex|0; - for(var i=1,l=a.length; i=0;j--) { - if(a[j].aabb.lowerBound[axisIndex] <= v.aabb.lowerBound[axisIndex]){ - break; - } - a[j+1] = a[j]; - } - a[j+1] = v; - } - return a; -}; - -SAPBroadphase.prototype.sortList = function(){ - var bodies = this.axisList, - axisIndex = this.axisIndex; - - // Sort the lists - SAPBroadphase.sortAxisList(bodies, axisIndex); -}; - -/** - * Get the colliding pairs - * @method getCollisionPairs - * @param {World} world - * @return {Array} - */ -SAPBroadphase.prototype.getCollisionPairs = function(world){ - var bodies = this.axisList, - result = this.result, - axisIndex = this.axisIndex; - - result.length = 0; - - // Update all AABBs if needed - var l = bodies.length; - while(l--){ - var b = bodies[l]; - if(b.aabbNeedsUpdate){ - b.updateAABB(); - } - } - - // Sort the lists - this.sortList(); - - // Look through the X list - for(var i=0, N=bodies.length|0; i!==N; i++){ - var bi = bodies[i]; - - for(var j=i+1; j G = [-n -rixn n rjxn] - - var r = vec2.create(); - var ri = vec2.create(); // worldAnchorA - var rj = vec2.create(); // worldAnchorB - var that = this; - normal.computeGq = function(){ - var bodyA = this.bodyA, - bodyB = this.bodyB, - xi = bodyA.position, - xj = bodyB.position; - - // Transform local anchors to world - vec2.rotate(ri, localAnchorA, bodyA.angle); - vec2.rotate(rj, localAnchorB, bodyB.angle); - - vec2.add(r, xj, rj); - vec2.sub(r, r, ri); - vec2.sub(r, r, xi); - - //vec2.sub(r, bodyB.position, bodyA.position); - return vec2.length(r) - that.distance; - }; - - // Make the contact constraint bilateral - this.setMaxForce(maxForce); - - /** - * If the upper limit is enabled or not. - * @property {Boolean} upperLimitEnabled - */ - this.upperLimitEnabled = false; - - /** - * The upper constraint limit. - * @property {number} upperLimit - */ - this.upperLimit = 1; - - /** - * If the lower limit is enabled or not. - * @property {Boolean} lowerLimitEnabled - */ - this.lowerLimitEnabled = false; - - /** - * The lower constraint limit. - * @property {number} lowerLimit - */ - this.lowerLimit = 0; - - /** - * Current constraint position. This is equal to the current distance between the world anchor points. - * @property {number} position - */ - this.position = 0; -} -DistanceConstraint.prototype = new Constraint(); -DistanceConstraint.prototype.constructor = DistanceConstraint; - -/** - * Update the constraint equations. Should be done if any of the bodies changed position, before solving. - * @method update - */ -var n = vec2.create(); -var ri = vec2.create(); // worldAnchorA -var rj = vec2.create(); // worldAnchorB -DistanceConstraint.prototype.update = function(){ - var normal = this.equations[0], - bodyA = this.bodyA, - bodyB = this.bodyB, - distance = this.distance, - xi = bodyA.position, - xj = bodyB.position, - normalEquation = this.equations[0], - G = normal.G; - - // Transform local anchors to world - vec2.rotate(ri, this.localAnchorA, bodyA.angle); - vec2.rotate(rj, this.localAnchorB, bodyB.angle); - - // Get world anchor points and normal - vec2.add(n, xj, rj); - vec2.sub(n, n, ri); - vec2.sub(n, n, xi); - this.position = vec2.length(n); - - var violating = false; - if(this.upperLimitEnabled){ - if(this.position > this.upperLimit){ - normalEquation.maxForce = 0; - normalEquation.minForce = -this.maxForce; - this.distance = this.upperLimit; - violating = true; - } - } - - if(this.lowerLimitEnabled){ - if(this.position < this.lowerLimit){ - normalEquation.maxForce = this.maxForce; - normalEquation.minForce = 0; - this.distance = this.lowerLimit; - violating = true; - } - } - - if((this.lowerLimitEnabled || this.upperLimitEnabled) && !violating){ - // No constraint needed. - normalEquation.enabled = false; - return; - } - - normalEquation.enabled = true; - - vec2.normalize(n,n); - - // Caluclate cross products - var rixn = vec2.crossLength(ri, n), - rjxn = vec2.crossLength(rj, n); - - // G = [-n -rixn n rjxn] - G[0] = -n[0]; - G[1] = -n[1]; - G[2] = -rixn; - G[3] = n[0]; - G[4] = n[1]; - G[5] = rjxn; -}; - -/** - * Set the max force to be used - * @method setMaxForce - * @param {Number} maxForce - */ -DistanceConstraint.prototype.setMaxForce = function(maxForce){ - var normal = this.equations[0]; - normal.minForce = -maxForce; - normal.maxForce = maxForce; -}; - -/** - * Get the max force - * @method getMaxForce - * @return {Number} - */ -DistanceConstraint.prototype.getMaxForce = function(){ - var normal = this.equations[0]; - return normal.maxForce; -}; - -},{"../equations/Equation":22,"../math/vec2":30,"../utils/Utils":57,"./Constraint":14}],16:[function(_dereq_,module,exports){ -var Constraint = _dereq_('./Constraint') -, Equation = _dereq_('../equations/Equation') -, AngleLockEquation = _dereq_('../equations/AngleLockEquation') -, vec2 = _dereq_('../math/vec2'); - -module.exports = GearConstraint; - -/** - * Constrains the angle of two bodies to each other to be equal. If a gear ratio is not one, the angle of bodyA must be a multiple of the angle of bodyB. - * @class GearConstraint - * @constructor - * @author schteppe - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {Number} [options.angle=0] Relative angle between the bodies. Will be set to the current angle between the bodies (the gear ratio is accounted for). - * @param {Number} [options.ratio=1] Gear ratio. - * @param {Number} [options.maxTorque] Maximum torque to apply. - * @extends Constraint - * - * @example - * var constraint = new GearConstraint(bodyA, bodyB); - * world.addConstraint(constraint); - * - * @example - * var constraint = new GearConstraint(bodyA, bodyB, { - * ratio: 2, - * maxTorque: 1000 - * }); - * world.addConstraint(constraint); - */ -function GearConstraint(bodyA, bodyB, options){ - options = options || {}; - - Constraint.call(this, bodyA, bodyB, Constraint.GEAR, options); - - /** - * The gear ratio. - * @property ratio - * @type {Number} - */ - this.ratio = options.ratio !== undefined ? options.ratio : 1; - - /** - * The relative angle - * @property angle - * @type {Number} - */ - this.angle = options.angle !== undefined ? options.angle : bodyB.angle - this.ratio * bodyA.angle; - - // Send same parameters to the equation - options.angle = this.angle; - options.ratio = this.ratio; - - this.equations = [ - new AngleLockEquation(bodyA,bodyB,options), - ]; - - // Set max torque - if(options.maxTorque !== undefined){ - this.setMaxTorque(options.maxTorque); - } -} -GearConstraint.prototype = new Constraint(); -GearConstraint.prototype.constructor = GearConstraint; - -GearConstraint.prototype.update = function(){ - var eq = this.equations[0]; - if(eq.ratio !== this.ratio){ - eq.setRatio(this.ratio); - } - eq.angle = this.angle; -}; - -/** - * Set the max torque for the constraint. - * @method setMaxTorque - * @param {Number} torque - */ -GearConstraint.prototype.setMaxTorque = function(torque){ - this.equations[0].setMaxTorque(torque); -}; - -/** - * Get the max torque for the constraint. - * @method getMaxTorque - * @return {Number} - */ -GearConstraint.prototype.getMaxTorque = function(torque){ - return this.equations[0].maxForce; -}; -},{"../equations/AngleLockEquation":20,"../equations/Equation":22,"../math/vec2":30,"./Constraint":14}],17:[function(_dereq_,module,exports){ -var Constraint = _dereq_('./Constraint') -, vec2 = _dereq_('../math/vec2') -, Equation = _dereq_('../equations/Equation'); - -module.exports = LockConstraint; - -/** - * Locks the relative position and rotation between two bodies. - * - * @class LockConstraint - * @constructor - * @author schteppe - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {Array} [options.localOffsetB] The offset of bodyB in bodyA's frame. If not given the offset is computed from current positions. - * @param {number} [options.localAngleB] The angle of bodyB in bodyA's frame. If not given, the angle is computed from current angles. - * @param {number} [options.maxForce] - * @extends Constraint - * - * @example - * // Locks the relative position and rotation between bodyA and bodyB - * var constraint = new LockConstraint(bodyA, bodyB); - * world.addConstraint(constraint); - */ -function LockConstraint(bodyA, bodyB, options){ - options = options || {}; - - Constraint.call(this,bodyA,bodyB,Constraint.LOCK,options); - - var maxForce = ( typeof(options.maxForce)==="undefined" ? Number.MAX_VALUE : options.maxForce ); - - var localAngleB = options.localAngleB || 0; - - // Use 3 equations: - // gx = (xj - xi - l) * xhat = 0 - // gy = (xj - xi - l) * yhat = 0 - // gr = (xi - xj + r) * that = 0 - // - // ...where: - // l is the localOffsetB vector rotated to world in bodyA frame - // r is the same vector but reversed and rotated from bodyB frame - // xhat, yhat are world axis vectors - // that is the tangent of r - // - // For the first two constraints, we get - // G*W = (vj - vi - ldot ) * xhat - // = (vj - vi - wi x l) * xhat - // - // Since (wi x l) * xhat = (l x xhat) * wi, we get - // G*W = [ -1 0 (-l x xhat) 1 0 0] * [vi wi vj wj] - // - // The last constraint gives - // GW = (vi - vj + wj x r) * that - // = [ that 0 -that (r x t) ] - - var x = new Equation(bodyA,bodyB,-maxForce,maxForce), - y = new Equation(bodyA,bodyB,-maxForce,maxForce), - rot = new Equation(bodyA,bodyB,-maxForce,maxForce); - - var l = vec2.create(), - g = vec2.create(), - that = this; - x.computeGq = function(){ - vec2.rotate(l, that.localOffsetB, bodyA.angle); - vec2.sub(g, bodyB.position, bodyA.position); - vec2.sub(g, g, l); - return g[0]; - }; - y.computeGq = function(){ - vec2.rotate(l, that.localOffsetB, bodyA.angle); - vec2.sub(g, bodyB.position, bodyA.position); - vec2.sub(g, g, l); - return g[1]; - }; - var r = vec2.create(), - t = vec2.create(); - rot.computeGq = function(){ - vec2.rotate(r, that.localOffsetB, bodyB.angle - that.localAngleB); - vec2.scale(r,r,-1); - vec2.sub(g,bodyA.position,bodyB.position); - vec2.add(g,g,r); - vec2.rotate(t,r,-Math.PI/2); - vec2.normalize(t,t); - return vec2.dot(g,t); - }; - - /** - * The offset of bodyB in bodyA's frame. - * @property {Array} localOffsetB - */ - this.localOffsetB = vec2.create(); - if(options.localOffsetB){ - vec2.copy(this.localOffsetB, options.localOffsetB); - } else { - // Construct from current positions - vec2.sub(this.localOffsetB, bodyB.position, bodyA.position); - vec2.rotate(this.localOffsetB, this.localOffsetB, -bodyA.angle); - } - - /** - * The offset angle of bodyB in bodyA's frame. - * @property {Number} localAngleB - */ - this.localAngleB = 0; - if(typeof(options.localAngleB) === 'number'){ - this.localAngleB = options.localAngleB; - } else { - // Construct - this.localAngleB = bodyB.angle - bodyA.angle; - } - - this.equations.push(x, y, rot); - this.setMaxForce(maxForce); -} -LockConstraint.prototype = new Constraint(); -LockConstraint.prototype.constructor = LockConstraint; - -/** - * Set the maximum force to be applied. - * @method setMaxForce - * @param {Number} force - */ -LockConstraint.prototype.setMaxForce = function(force){ - var eqs = this.equations; - for(var i=0; ithis tutorial. Also called "slider constraint". - * - * @class PrismaticConstraint - * @constructor - * @extends Constraint - * @author schteppe - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {Number} [options.maxForce] Max force to be applied by the constraint - * @param {Array} [options.localAnchorA] Body A's anchor point, defined in its own local frame. - * @param {Array} [options.localAnchorB] Body B's anchor point, defined in its own local frame. - * @param {Array} [options.localAxisA] An axis, defined in body A frame, that body B's anchor point may slide along. - * @param {Boolean} [options.disableRotationalLock] If set to true, bodyB will be free to rotate around its anchor point. - * @param {Number} [options.upperLimit] - * @param {Number} [options.lowerLimit] - * @todo Ability to create using only a point and a worldAxis - */ -function PrismaticConstraint(bodyA, bodyB, options){ - options = options || {}; - Constraint.call(this,bodyA,bodyB,Constraint.PRISMATIC,options); - - // Get anchors - var localAnchorA = vec2.fromValues(0,0), - localAxisA = vec2.fromValues(1,0), - localAnchorB = vec2.fromValues(0,0); - if(options.localAnchorA){ vec2.copy(localAnchorA, options.localAnchorA); } - if(options.localAxisA){ vec2.copy(localAxisA, options.localAxisA); } - if(options.localAnchorB){ vec2.copy(localAnchorB, options.localAnchorB); } - - /** - * @property localAnchorA - * @type {Array} - */ - this.localAnchorA = localAnchorA; - - /** - * @property localAnchorB - * @type {Array} - */ - this.localAnchorB = localAnchorB; - - /** - * @property localAxisA - * @type {Array} - */ - this.localAxisA = localAxisA; - - /* - - The constraint violation for the common axis point is - - g = ( xj + rj - xi - ri ) * t := gg*t - - where r are body-local anchor points, and t is a tangent to the constraint axis defined in body i frame. - - gdot = ( vj + wj x rj - vi - wi x ri ) * t + ( xj + rj - xi - ri ) * ( wi x t ) - - Note the use of the chain rule. Now we identify the jacobian - - G*W = [ -t -ri x t + t x gg t rj x t ] * [vi wi vj wj] - - The rotational part is just a rotation lock. - - */ - - var maxForce = this.maxForce = typeof(options.maxForce)!=="undefined" ? options.maxForce : Number.MAX_VALUE; - - // Translational part - var trans = new Equation(bodyA,bodyB,-maxForce,maxForce); - var ri = new vec2.create(), - rj = new vec2.create(), - gg = new vec2.create(), - t = new vec2.create(); - trans.computeGq = function(){ - // g = ( xj + rj - xi - ri ) * t - return vec2.dot(gg,t); - }; - trans.updateJacobian = function(){ - var G = this.G, - xi = bodyA.position, - xj = bodyB.position; - vec2.rotate(ri,localAnchorA,bodyA.angle); - vec2.rotate(rj,localAnchorB,bodyB.angle); - vec2.add(gg,xj,rj); - vec2.sub(gg,gg,xi); - vec2.sub(gg,gg,ri); - vec2.rotate(t,localAxisA,bodyA.angle+Math.PI/2); - - G[0] = -t[0]; - G[1] = -t[1]; - G[2] = -vec2.crossLength(ri,t) + vec2.crossLength(t,gg); - G[3] = t[0]; - G[4] = t[1]; - G[5] = vec2.crossLength(rj,t); - }; - this.equations.push(trans); - - // Rotational part - if(!options.disableRotationalLock){ - var rot = new RotationalLockEquation(bodyA,bodyB,-maxForce,maxForce); - this.equations.push(rot); - } - - /** - * The position of anchor A relative to anchor B, along the constraint axis. - * @property position - * @type {Number} - */ - this.position = 0; - - // Is this one used at all? - this.velocity = 0; - - /** - * Set to true to enable lower limit. - * @property lowerLimitEnabled - * @type {Boolean} - */ - this.lowerLimitEnabled = typeof(options.lowerLimit)!=="undefined" ? true : false; - - /** - * Set to true to enable upper limit. - * @property upperLimitEnabled - * @type {Boolean} - */ - this.upperLimitEnabled = typeof(options.upperLimit)!=="undefined" ? true : false; - - /** - * Lower constraint limit. The constraint position is forced to be larger than this value. - * @property lowerLimit - * @type {Number} - */ - this.lowerLimit = typeof(options.lowerLimit)!=="undefined" ? options.lowerLimit : 0; - - /** - * Upper constraint limit. The constraint position is forced to be smaller than this value. - * @property upperLimit - * @type {Number} - */ - this.upperLimit = typeof(options.upperLimit)!=="undefined" ? options.upperLimit : 1; - - // Equations used for limits - this.upperLimitEquation = new ContactEquation(bodyA,bodyB); - this.lowerLimitEquation = new ContactEquation(bodyA,bodyB); - - // Set max/min forces - this.upperLimitEquation.minForce = this.lowerLimitEquation.minForce = 0; - this.upperLimitEquation.maxForce = this.lowerLimitEquation.maxForce = maxForce; - - /** - * Equation used for the motor. - * @property motorEquation - * @type {Equation} - */ - this.motorEquation = new Equation(bodyA,bodyB); - - /** - * The current motor state. Enable or disable the motor using .enableMotor - * @property motorEnabled - * @type {Boolean} - */ - this.motorEnabled = false; - - /** - * Set the target speed for the motor. - * @property motorSpeed - * @type {Number} - */ - this.motorSpeed = 0; - - var that = this; - var motorEquation = this.motorEquation; - var old = motorEquation.computeGW; - motorEquation.computeGq = function(){ return 0; }; - motorEquation.computeGW = function(){ - var G = this.G, - bi = this.bodyA, - bj = this.bodyB, - vi = bi.velocity, - vj = bj.velocity, - wi = bi.angularVelocity, - wj = bj.angularVelocity; - return this.gmult(G,vi,wi,vj,wj) + that.motorSpeed; - }; -} - -PrismaticConstraint.prototype = new Constraint(); -PrismaticConstraint.prototype.constructor = PrismaticConstraint; - -var worldAxisA = vec2.create(), - worldAnchorA = vec2.create(), - worldAnchorB = vec2.create(), - orientedAnchorA = vec2.create(), - orientedAnchorB = vec2.create(), - tmp = vec2.create(); - -/** - * Update the constraint equations. Should be done if any of the bodies changed position, before solving. - * @method update - */ -PrismaticConstraint.prototype.update = function(){ - var eqs = this.equations, - trans = eqs[0], - upperLimit = this.upperLimit, - lowerLimit = this.lowerLimit, - upperLimitEquation = this.upperLimitEquation, - lowerLimitEquation = this.lowerLimitEquation, - bodyA = this.bodyA, - bodyB = this.bodyB, - localAxisA = this.localAxisA, - localAnchorA = this.localAnchorA, - localAnchorB = this.localAnchorB; - - trans.updateJacobian(); - - // Transform local things to world - vec2.rotate(worldAxisA, localAxisA, bodyA.angle); - vec2.rotate(orientedAnchorA, localAnchorA, bodyA.angle); - vec2.add(worldAnchorA, orientedAnchorA, bodyA.position); - vec2.rotate(orientedAnchorB, localAnchorB, bodyB.angle); - vec2.add(worldAnchorB, orientedAnchorB, bodyB.position); - - var relPosition = this.position = vec2.dot(worldAnchorB,worldAxisA) - vec2.dot(worldAnchorA,worldAxisA); - - // Motor - if(this.motorEnabled){ - // G = [ a a x ri -a -a x rj ] - var G = this.motorEquation.G; - G[0] = worldAxisA[0]; - G[1] = worldAxisA[1]; - G[2] = vec2.crossLength(worldAxisA,orientedAnchorB); - G[3] = -worldAxisA[0]; - G[4] = -worldAxisA[1]; - G[5] = -vec2.crossLength(worldAxisA,orientedAnchorA); - } - - /* - Limits strategy: - Add contact equation, with normal along the constraint axis. - min/maxForce is set so the constraint is repulsive in the correct direction. - Some offset is added to either equation.contactPointA or .contactPointB to get the correct upper/lower limit. - - ^ - | - upperLimit x - | ------ - anchorB x<---| B | - | | | - ------ | ------ - | | | - | A |-->x anchorA - ------ | - x lowerLimit - | - axis - */ - - - if(this.upperLimitEnabled && relPosition > upperLimit){ - // Update contact constraint normal, etc - vec2.scale(upperLimitEquation.normalA, worldAxisA, -1); - vec2.sub(upperLimitEquation.contactPointA, worldAnchorA, bodyA.position); - vec2.sub(upperLimitEquation.contactPointB, worldAnchorB, bodyB.position); - vec2.scale(tmp,worldAxisA,upperLimit); - vec2.add(upperLimitEquation.contactPointA,upperLimitEquation.contactPointA,tmp); - if(eqs.indexOf(upperLimitEquation) === -1){ - eqs.push(upperLimitEquation); - } - } else { - var idx = eqs.indexOf(upperLimitEquation); - if(idx !== -1){ - eqs.splice(idx,1); - } - } - - if(this.lowerLimitEnabled && relPosition < lowerLimit){ - // Update contact constraint normal, etc - vec2.scale(lowerLimitEquation.normalA, worldAxisA, 1); - vec2.sub(lowerLimitEquation.contactPointA, worldAnchorA, bodyA.position); - vec2.sub(lowerLimitEquation.contactPointB, worldAnchorB, bodyB.position); - vec2.scale(tmp,worldAxisA,lowerLimit); - vec2.sub(lowerLimitEquation.contactPointB,lowerLimitEquation.contactPointB,tmp); - if(eqs.indexOf(lowerLimitEquation) === -1){ - eqs.push(lowerLimitEquation); - } - } else { - var idx = eqs.indexOf(lowerLimitEquation); - if(idx !== -1){ - eqs.splice(idx,1); - } - } -}; - -/** - * Enable the motor - * @method enableMotor - */ -PrismaticConstraint.prototype.enableMotor = function(){ - if(this.motorEnabled){ - return; - } - this.equations.push(this.motorEquation); - this.motorEnabled = true; -}; - -/** - * Disable the rotational motor - * @method disableMotor - */ -PrismaticConstraint.prototype.disableMotor = function(){ - if(!this.motorEnabled){ - return; - } - var i = this.equations.indexOf(this.motorEquation); - this.equations.splice(i,1); - this.motorEnabled = false; -}; - -/** - * Set the constraint limits. - * @method setLimits - * @param {number} lower Lower limit. - * @param {number} upper Upper limit. - */ -PrismaticConstraint.prototype.setLimits = function (lower, upper) { - if(typeof(lower) === 'number'){ - this.lowerLimit = lower; - this.lowerLimitEnabled = true; - } else { - this.lowerLimit = lower; - this.lowerLimitEnabled = false; - } - - if(typeof(upper) === 'number'){ - this.upperLimit = upper; - this.upperLimitEnabled = true; - } else { - this.upperLimit = upper; - this.upperLimitEnabled = false; - } -}; - - -},{"../equations/ContactEquation":21,"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../math/vec2":30,"./Constraint":14}],19:[function(_dereq_,module,exports){ -var Constraint = _dereq_('./Constraint') -, Equation = _dereq_('../equations/Equation') -, RotationalVelocityEquation = _dereq_('../equations/RotationalVelocityEquation') -, RotationalLockEquation = _dereq_('../equations/RotationalLockEquation') -, vec2 = _dereq_('../math/vec2'); - -module.exports = RevoluteConstraint; - -var worldPivotA = vec2.create(), - worldPivotB = vec2.create(), - xAxis = vec2.fromValues(1,0), - yAxis = vec2.fromValues(0,1), - g = vec2.create(); - -/** - * Connects two bodies at given offset points, letting them rotate relative to each other around this point. - * @class RevoluteConstraint - * @constructor - * @author schteppe - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {Array} [options.worldPivot] A pivot point given in world coordinates. If specified, localPivotA and localPivotB are automatically computed from this value. - * @param {Array} [options.localPivotA] The point relative to the center of mass of bodyA which bodyA is constrained to. - * @param {Array} [options.localPivotB] See localPivotA. - * @param {Number} [options.maxForce] The maximum force that should be applied to constrain the bodies. - * @extends Constraint - * - * @example - * // This will create a revolute constraint between two bodies with pivot point in between them. - * var bodyA = new Body({ mass: 1, position: [-1, 0] }); - * var bodyB = new Body({ mass: 1, position: [1, 0] }); - * var constraint = new RevoluteConstraint(bodyA, bodyB, { - * worldPivot: [0, 0] - * }); - * world.addConstraint(constraint); - * - * // Using body-local pivot points, the constraint could have been constructed like this: - * var constraint = new RevoluteConstraint(bodyA, bodyB, { - * localPivotA: [1, 0], - * localPivotB: [-1, 0] - * }); - */ -function RevoluteConstraint(bodyA, bodyB, options){ - options = options || {}; - Constraint.call(this,bodyA,bodyB,Constraint.REVOLUTE,options); - - var maxForce = this.maxForce = typeof(options.maxForce) !== "undefined" ? options.maxForce : Number.MAX_VALUE; - - /** - * @property {Array} pivotA - */ - this.pivotA = vec2.create(); - - /** - * @property {Array} pivotB - */ - this.pivotB = vec2.create(); - - if(options.worldPivot){ - // Compute pivotA and pivotB - vec2.sub(this.pivotA, options.worldPivot, bodyA.position); - vec2.sub(this.pivotB, options.worldPivot, bodyB.position); - // Rotate to local coordinate system - vec2.rotate(this.pivotA, this.pivotA, -bodyA.angle); - vec2.rotate(this.pivotB, this.pivotB, -bodyB.angle); - } else { - // Get pivotA and pivotB - vec2.copy(this.pivotA, options.localPivotA); - vec2.copy(this.pivotB, options.localPivotB); - } - - // Equations to be fed to the solver - var eqs = this.equations = [ - new Equation(bodyA,bodyB,-maxForce,maxForce), - new Equation(bodyA,bodyB,-maxForce,maxForce), - ]; - - var x = eqs[0]; - var y = eqs[1]; - var that = this; - - x.computeGq = function(){ - vec2.rotate(worldPivotA, that.pivotA, bodyA.angle); - vec2.rotate(worldPivotB, that.pivotB, bodyB.angle); - vec2.add(g, bodyB.position, worldPivotB); - vec2.sub(g, g, bodyA.position); - vec2.sub(g, g, worldPivotA); - return vec2.dot(g,xAxis); - }; - - y.computeGq = function(){ - vec2.rotate(worldPivotA, that.pivotA, bodyA.angle); - vec2.rotate(worldPivotB, that.pivotB, bodyB.angle); - vec2.add(g, bodyB.position, worldPivotB); - vec2.sub(g, g, bodyA.position); - vec2.sub(g, g, worldPivotA); - return vec2.dot(g,yAxis); - }; - - y.minForce = x.minForce = -maxForce; - y.maxForce = x.maxForce = maxForce; - - this.motorEquation = new RotationalVelocityEquation(bodyA,bodyB); - - /** - * Indicates whether the motor is enabled. Use .enableMotor() to enable the constraint motor. - * @property {Boolean} motorEnabled - * @readOnly - */ - this.motorEnabled = false; - - /** - * The constraint position. - * @property angle - * @type {Number} - * @readOnly - */ - this.angle = 0; - - /** - * Set to true to enable lower limit - * @property lowerLimitEnabled - * @type {Boolean} - */ - this.lowerLimitEnabled = false; - - /** - * Set to true to enable upper limit - * @property upperLimitEnabled - * @type {Boolean} - */ - this.upperLimitEnabled = false; - - /** - * The lower limit on the constraint angle. - * @property lowerLimit - * @type {Boolean} - */ - this.lowerLimit = 0; - - /** - * The upper limit on the constraint angle. - * @property upperLimit - * @type {Boolean} - */ - this.upperLimit = 0; - - this.upperLimitEquation = new RotationalLockEquation(bodyA,bodyB); - this.lowerLimitEquation = new RotationalLockEquation(bodyA,bodyB); - this.upperLimitEquation.minForce = 0; - this.lowerLimitEquation.maxForce = 0; -} -RevoluteConstraint.prototype = new Constraint(); -RevoluteConstraint.prototype.constructor = RevoluteConstraint; - -/** - * Set the constraint angle limits. - * @method setLimits - * @param {number} lower Lower angle limit. - * @param {number} upper Upper angle limit. - */ -RevoluteConstraint.prototype.setLimits = function (lower, upper) { - if(typeof(lower) === 'number'){ - this.lowerLimit = lower; - this.lowerLimitEnabled = true; - } else { - this.lowerLimit = lower; - this.lowerLimitEnabled = false; - } - - if(typeof(upper) === 'number'){ - this.upperLimit = upper; - this.upperLimitEnabled = true; - } else { - this.upperLimit = upper; - this.upperLimitEnabled = false; - } -}; - -RevoluteConstraint.prototype.update = function(){ - var bodyA = this.bodyA, - bodyB = this.bodyB, - pivotA = this.pivotA, - pivotB = this.pivotB, - eqs = this.equations, - normal = eqs[0], - tangent= eqs[1], - x = eqs[0], - y = eqs[1], - upperLimit = this.upperLimit, - lowerLimit = this.lowerLimit, - upperLimitEquation = this.upperLimitEquation, - lowerLimitEquation = this.lowerLimitEquation; - - var relAngle = this.angle = bodyB.angle - bodyA.angle; - - if(this.upperLimitEnabled && relAngle > upperLimit){ - upperLimitEquation.angle = upperLimit; - if(eqs.indexOf(upperLimitEquation) === -1){ - eqs.push(upperLimitEquation); - } - } else { - var idx = eqs.indexOf(upperLimitEquation); - if(idx !== -1){ - eqs.splice(idx,1); - } - } - - if(this.lowerLimitEnabled && relAngle < lowerLimit){ - lowerLimitEquation.angle = lowerLimit; - if(eqs.indexOf(lowerLimitEquation) === -1){ - eqs.push(lowerLimitEquation); - } - } else { - var idx = eqs.indexOf(lowerLimitEquation); - if(idx !== -1){ - eqs.splice(idx,1); - } - } - - /* - - The constraint violation is - - g = xj + rj - xi - ri - - ...where xi and xj are the body positions and ri and rj world-oriented offset vectors. Differentiate: - - gdot = vj + wj x rj - vi - wi x ri - - We split this into x and y directions. (let x and y be unit vectors along the respective axes) - - gdot * x = ( vj + wj x rj - vi - wi x ri ) * x - = ( vj*x + (wj x rj)*x -vi*x -(wi x ri)*x - = ( vj*x + (rj x x)*wj -vi*x -(ri x x)*wi - = [ -x -(ri x x) x (rj x x)] * [vi wi vj wj] - = G*W - - ...and similar for y. We have then identified the jacobian entries for x and y directions: - - Gx = [ x (rj x x) -x -(ri x x)] - Gy = [ y (rj x y) -y -(ri x y)] - - */ - - vec2.rotate(worldPivotA, pivotA, bodyA.angle); - vec2.rotate(worldPivotB, pivotB, bodyB.angle); - - // todo: these are a bit sparse. We could save some computations on making custom eq.computeGW functions, etc - - x.G[0] = -1; - x.G[1] = 0; - x.G[2] = -vec2.crossLength(worldPivotA,xAxis); - x.G[3] = 1; - x.G[4] = 0; - x.G[5] = vec2.crossLength(worldPivotB,xAxis); - - y.G[0] = 0; - y.G[1] = -1; - y.G[2] = -vec2.crossLength(worldPivotA,yAxis); - y.G[3] = 0; - y.G[4] = 1; - y.G[5] = vec2.crossLength(worldPivotB,yAxis); -}; - -/** - * Enable the rotational motor - * @method enableMotor - */ -RevoluteConstraint.prototype.enableMotor = function(){ - if(this.motorEnabled){ - return; - } - this.equations.push(this.motorEquation); - this.motorEnabled = true; -}; - -/** - * Disable the rotational motor - * @method disableMotor - */ -RevoluteConstraint.prototype.disableMotor = function(){ - if(!this.motorEnabled){ - return; - } - var i = this.equations.indexOf(this.motorEquation); - this.equations.splice(i,1); - this.motorEnabled = false; -}; - -/** - * Check if the motor is enabled. - * @method motorIsEnabled - * @deprecated use property motorEnabled instead. - * @return {Boolean} - */ -RevoluteConstraint.prototype.motorIsEnabled = function(){ - return !!this.motorEnabled; -}; - -/** - * Set the speed of the rotational constraint motor - * @method setMotorSpeed - * @param {Number} speed - */ -RevoluteConstraint.prototype.setMotorSpeed = function(speed){ - if(!this.motorEnabled){ - return; - } - var i = this.equations.indexOf(this.motorEquation); - this.equations[i].relativeVelocity = speed; -}; - -/** - * Get the speed of the rotational constraint motor - * @method getMotorSpeed - * @return {Number} The current speed, or false if the motor is not enabled. - */ -RevoluteConstraint.prototype.getMotorSpeed = function(){ - if(!this.motorEnabled){ - return false; - } - return this.motorEquation.relativeVelocity; -}; - -},{"../equations/Equation":22,"../equations/RotationalLockEquation":24,"../equations/RotationalVelocityEquation":25,"../math/vec2":30,"./Constraint":14}],20:[function(_dereq_,module,exports){ -var Equation = _dereq_("./Equation"), - vec2 = _dereq_('../math/vec2'); - -module.exports = AngleLockEquation; - -/** - * Locks the relative angle between two bodies. The constraint tries to keep the dot product between two vectors, local in each body, to zero. The local angle in body i is a parameter. - * - * @class AngleLockEquation - * @constructor - * @extends Equation - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {Number} [options.angle] Angle to add to the local vector in body A. - * @param {Number} [options.ratio] Gear ratio - */ -function AngleLockEquation(bodyA, bodyB, options){ - options = options || {}; - Equation.call(this,bodyA,bodyB,-Number.MAX_VALUE,Number.MAX_VALUE); - this.angle = options.angle || 0; - - /** - * The gear ratio. - * @property {Number} ratio - * @private - * @see setRatio - */ - this.ratio = typeof(options.ratio)==="number" ? options.ratio : 1; - - this.setRatio(this.ratio); -} -AngleLockEquation.prototype = new Equation(); -AngleLockEquation.prototype.constructor = AngleLockEquation; - -AngleLockEquation.prototype.computeGq = function(){ - return this.ratio * this.bodyA.angle - this.bodyB.angle + this.angle; -}; - -/** - * Set the gear ratio for this equation - * @method setRatio - * @param {Number} ratio - */ -AngleLockEquation.prototype.setRatio = function(ratio){ - var G = this.G; - G[2] = ratio; - G[5] = -1; - this.ratio = ratio; -}; - -/** - * Set the max force for the equation. - * @method setMaxTorque - * @param {Number} torque - */ -AngleLockEquation.prototype.setMaxTorque = function(torque){ - this.maxForce = torque; - this.minForce = -torque; -}; - -},{"../math/vec2":30,"./Equation":22}],21:[function(_dereq_,module,exports){ -var Equation = _dereq_("./Equation"), - vec2 = _dereq_('../math/vec2'); - -module.exports = ContactEquation; - -/** - * Non-penetration constraint equation. Tries to make the contactPointA and contactPointB vectors coincide, while keeping the applied force repulsive. - * - * @class ContactEquation - * @constructor - * @extends Equation - * @param {Body} bodyA - * @param {Body} bodyB - */ -function ContactEquation(bodyA, bodyB){ - Equation.call(this, bodyA, bodyB, 0, Number.MAX_VALUE); - - /** - * Vector from body i center of mass to the contact point. - * @property contactPointA - * @type {Array} - */ - this.contactPointA = vec2.create(); - this.penetrationVec = vec2.create(); - - /** - * World-oriented vector from body A center of mass to the contact point. - * @property contactPointB - * @type {Array} - */ - this.contactPointB = vec2.create(); - - /** - * The normal vector, pointing out of body i - * @property normalA - * @type {Array} - */ - this.normalA = vec2.create(); - - /** - * The restitution to use (0=no bounciness, 1=max bounciness). - * @property restitution - * @type {Number} - */ - this.restitution = 0; - - /** - * This property is set to true if this is the first impact between the bodies (not persistant contact). - * @property firstImpact - * @type {Boolean} - * @readOnly - */ - this.firstImpact = false; - - /** - * The shape in body i that triggered this contact. - * @property shapeA - * @type {Shape} - */ - this.shapeA = null; - - /** - * The shape in body j that triggered this contact. - * @property shapeB - * @type {Shape} - */ - this.shapeB = null; -} -ContactEquation.prototype = new Equation(); -ContactEquation.prototype.constructor = ContactEquation; -ContactEquation.prototype.computeB = function(a,b,h){ - var bi = this.bodyA, - bj = this.bodyB, - ri = this.contactPointA, - rj = this.contactPointB, - xi = bi.position, - xj = bj.position; - - var penetrationVec = this.penetrationVec, - n = this.normalA, - G = this.G; - - // Caluclate cross products - var rixn = vec2.crossLength(ri,n), - rjxn = vec2.crossLength(rj,n); - - // G = [-n -rixn n rjxn] - G[0] = -n[0]; - G[1] = -n[1]; - G[2] = -rixn; - G[3] = n[0]; - G[4] = n[1]; - G[5] = rjxn; - - // Calculate q = xj+rj -(xi+ri) i.e. the penetration vector - vec2.add(penetrationVec,xj,rj); - vec2.sub(penetrationVec,penetrationVec,xi); - vec2.sub(penetrationVec,penetrationVec,ri); - - // Compute iteration - var GW, Gq; - if(this.firstImpact && this.restitution !== 0){ - Gq = 0; - GW = (1/b)*(1+this.restitution) * this.computeGW(); - } else { - Gq = vec2.dot(n,penetrationVec) + this.offset; - GW = this.computeGW(); - } - - var GiMf = this.computeGiMf(); - var B = - Gq * a - GW * b - h*GiMf; - - return B; -}; - -},{"../math/vec2":30,"./Equation":22}],22:[function(_dereq_,module,exports){ -module.exports = Equation; - -var vec2 = _dereq_('../math/vec2'), - Utils = _dereq_('../utils/Utils'), - Body = _dereq_('../objects/Body'); - -/** - * Base class for constraint equations. - * @class Equation - * @constructor - * @param {Body} bodyA First body participating in the equation - * @param {Body} bodyB Second body participating in the equation - * @param {number} minForce Minimum force to apply. Default: -Number.MAX_VALUE - * @param {number} maxForce Maximum force to apply. Default: Number.MAX_VALUE - */ -function Equation(bodyA, bodyB, minForce, maxForce){ - - /** - * Minimum force to apply when solving. - * @property minForce - * @type {Number} - */ - this.minForce = typeof(minForce)==="undefined" ? -Number.MAX_VALUE : minForce; - - /** - * Max force to apply when solving. - * @property maxForce - * @type {Number} - */ - this.maxForce = typeof(maxForce)==="undefined" ? Number.MAX_VALUE : maxForce; - - /** - * First body participating in the constraint - * @property bodyA - * @type {Body} - */ - this.bodyA = bodyA; - - /** - * Second body participating in the constraint - * @property bodyB - * @type {Body} - */ - this.bodyB = bodyB; - - /** - * The stiffness of this equation. Typically chosen to a large number (~1e7), but can be chosen somewhat freely to get a stable simulation. - * @property stiffness - * @type {Number} - */ - this.stiffness = Equation.DEFAULT_STIFFNESS; - - /** - * The number of time steps needed to stabilize the constraint equation. Typically between 3 and 5 time steps. - * @property relaxation - * @type {Number} - */ - this.relaxation = Equation.DEFAULT_RELAXATION; - - /** - * The Jacobian entry of this equation. 6 numbers, 3 per body (x,y,angle). - * @property G - * @type {Array} - */ - this.G = new Utils.ARRAY_TYPE(6); - for(var i=0; i<6; i++){ - this.G[i]=0; - } - - this.offset = 0; - - this.a = 0; - this.b = 0; - this.epsilon = 0; - this.timeStep = 1/60; - - /** - * Indicates if stiffness or relaxation was changed. - * @property {Boolean} needsUpdate - */ - this.needsUpdate = true; - - /** - * The resulting constraint multiplier from the last solve. This is mostly equivalent to the force produced by the constraint. - * @property multiplier - * @type {Number} - */ - this.multiplier = 0; - - /** - * Relative velocity. - * @property {Number} relativeVelocity - */ - this.relativeVelocity = 0; - - /** - * Whether this equation is enabled or not. If true, it will be added to the solver. - * @property {Boolean} enabled - */ - this.enabled = true; -} -Equation.prototype.constructor = Equation; - -/** - * The default stiffness when creating a new Equation. - * @static - * @property {Number} DEFAULT_STIFFNESS - * @default 1e6 - */ -Equation.DEFAULT_STIFFNESS = 1e6; - -/** - * The default relaxation when creating a new Equation. - * @static - * @property {Number} DEFAULT_RELAXATION - * @default 4 - */ -Equation.DEFAULT_RELAXATION = 4; - -/** - * Compute SPOOK parameters .a, .b and .epsilon according to the current parameters. See equations 9, 10 and 11 in the SPOOK notes. - * @method update - */ -Equation.prototype.update = function(){ - var k = this.stiffness, - d = this.relaxation, - h = this.timeStep; - - this.a = 4.0 / (h * (1 + 4 * d)); - this.b = (4.0 * d) / (1 + 4 * d); - this.epsilon = 4.0 / (h * h * k * (1 + 4 * d)); - - this.needsUpdate = false; -}; - -/** - * Multiply a jacobian entry with corresponding positions or velocities - * @method gmult - * @return {Number} - */ -Equation.prototype.gmult = function(G,vi,wi,vj,wj){ - return G[0] * vi[0] + - G[1] * vi[1] + - G[2] * wi + - G[3] * vj[0] + - G[4] * vj[1] + - G[5] * wj; -}; - -/** - * Computes the RHS of the SPOOK equation - * @method computeB - * @return {Number} - */ -Equation.prototype.computeB = function(a,b,h){ - var GW = this.computeGW(); - var Gq = this.computeGq(); - var GiMf = this.computeGiMf(); - return - Gq * a - GW * b - GiMf*h; -}; - -/** - * Computes G\*q, where q are the generalized body coordinates - * @method computeGq - * @return {Number} - */ -var qi = vec2.create(), - qj = vec2.create(); -Equation.prototype.computeGq = function(){ - var G = this.G, - bi = this.bodyA, - bj = this.bodyB, - xi = bi.position, - xj = bj.position, - ai = bi.angle, - aj = bj.angle; - - return this.gmult(G, qi, ai, qj, aj) + this.offset; -}; - -/** - * Computes G\*W, where W are the body velocities - * @method computeGW - * @return {Number} - */ -Equation.prototype.computeGW = function(){ - var G = this.G, - bi = this.bodyA, - bj = this.bodyB, - vi = bi.velocity, - vj = bj.velocity, - wi = bi.angularVelocity, - wj = bj.angularVelocity; - return this.gmult(G,vi,wi,vj,wj) + this.relativeVelocity; -}; - -/** - * Computes G\*Wlambda, where W are the body velocities - * @method computeGWlambda - * @return {Number} - */ -Equation.prototype.computeGWlambda = function(){ - var G = this.G, - bi = this.bodyA, - bj = this.bodyB, - vi = bi.vlambda, - vj = bj.vlambda, - wi = bi.wlambda, - wj = bj.wlambda; - return this.gmult(G,vi,wi,vj,wj); -}; - -/** - * Computes G\*inv(M)\*f, where M is the mass matrix with diagonal blocks for each body, and f are the forces on the bodies. - * @method computeGiMf - * @return {Number} - */ -var iMfi = vec2.create(), - iMfj = vec2.create(); -Equation.prototype.computeGiMf = function(){ - var bi = this.bodyA, - bj = this.bodyB, - fi = bi.force, - ti = bi.angularForce, - fj = bj.force, - tj = bj.angularForce, - invMassi = bi.invMassSolve, - invMassj = bj.invMassSolve, - invIi = bi.invInertiaSolve, - invIj = bj.invInertiaSolve, - G = this.G; - - vec2.scale(iMfi, fi, invMassi); - vec2.multiply(iMfi, bi.massMultiplier, iMfi); - vec2.scale(iMfj, fj,invMassj); - vec2.multiply(iMfj, bj.massMultiplier, iMfj); - - return this.gmult(G,iMfi,ti*invIi,iMfj,tj*invIj); -}; - -/** - * Computes G\*inv(M)\*G' - * @method computeGiMGt - * @return {Number} - */ -Equation.prototype.computeGiMGt = function(){ - var bi = this.bodyA, - bj = this.bodyB, - invMassi = bi.invMassSolve, - invMassj = bj.invMassSolve, - invIi = bi.invInertiaSolve, - invIj = bj.invInertiaSolve, - G = this.G; - - return G[0] * G[0] * invMassi * bi.massMultiplier[0] + - G[1] * G[1] * invMassi * bi.massMultiplier[1] + - G[2] * G[2] * invIi + - G[3] * G[3] * invMassj * bj.massMultiplier[0] + - G[4] * G[4] * invMassj * bj.massMultiplier[1] + - G[5] * G[5] * invIj; -}; - -var addToWlambda_temp = vec2.create(), - addToWlambda_Gi = vec2.create(), - addToWlambda_Gj = vec2.create(), - addToWlambda_ri = vec2.create(), - addToWlambda_rj = vec2.create(), - addToWlambda_Mdiag = vec2.create(); - -/** - * Add constraint velocity to the bodies. - * @method addToWlambda - * @param {Number} deltalambda - */ -Equation.prototype.addToWlambda = function(deltalambda){ - var bi = this.bodyA, - bj = this.bodyB, - temp = addToWlambda_temp, - Gi = addToWlambda_Gi, - Gj = addToWlambda_Gj, - ri = addToWlambda_ri, - rj = addToWlambda_rj, - invMassi = bi.invMassSolve, - invMassj = bj.invMassSolve, - invIi = bi.invInertiaSolve, - invIj = bj.invInertiaSolve, - Mdiag = addToWlambda_Mdiag, - G = this.G; - - Gi[0] = G[0]; - Gi[1] = G[1]; - Gj[0] = G[3]; - Gj[1] = G[4]; - - // Add to linear velocity - // v_lambda += inv(M) * delta_lamba * G - vec2.scale(temp, Gi, invMassi*deltalambda); - vec2.multiply(temp, temp, bi.massMultiplier); - vec2.add( bi.vlambda, bi.vlambda, temp); - // This impulse is in the offset frame - // Also add contribution to angular - //bi.wlambda -= vec2.crossLength(temp,ri); - bi.wlambda += invIi * G[2] * deltalambda; - - - vec2.scale(temp, Gj, invMassj*deltalambda); - vec2.multiply(temp, temp, bj.massMultiplier); - vec2.add( bj.vlambda, bj.vlambda, temp); - //bj.wlambda -= vec2.crossLength(temp,rj); - bj.wlambda += invIj * G[5] * deltalambda; -}; - -/** - * Compute the denominator part of the SPOOK equation: C = G\*inv(M)\*G' + eps - * @method computeInvC - * @param {Number} eps - * @return {Number} - */ -Equation.prototype.computeInvC = function(eps){ - return 1.0 / (this.computeGiMGt() + eps); -}; - -},{"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],23:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2') -, Equation = _dereq_('./Equation') -, Utils = _dereq_('../utils/Utils'); - -module.exports = FrictionEquation; - -/** - * Constrains the slipping in a contact along a tangent - * - * @class FrictionEquation - * @constructor - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Number} slipForce - * @extends Equation - */ -function FrictionEquation(bodyA, bodyB, slipForce){ - Equation.call(this, bodyA, bodyB, -slipForce, slipForce); - - /** - * Relative vector from center of body A to the contact point, world oriented. - * @property contactPointA - * @type {Array} - */ - this.contactPointA = vec2.create(); - - /** - * Relative vector from center of body B to the contact point, world oriented. - * @property contactPointB - * @type {Array} - */ - this.contactPointB = vec2.create(); - - /** - * Tangent vector that the friction force will act along. World oriented. - * @property t - * @type {Array} - */ - this.t = vec2.create(); - - /** - * ContactEquations connected to this friction equation. The contact equations can be used to rescale the max force for the friction. If more than one contact equation is given, then the max force can be set to the average. - * @property contactEquations - * @type {ContactEquation} - */ - this.contactEquations = []; - - /** - * The shape in body i that triggered this friction. - * @property shapeA - * @type {Shape} - * @todo Needed? The shape can be looked up via contactEquation.shapeA... - */ - this.shapeA = null; - - /** - * The shape in body j that triggered this friction. - * @property shapeB - * @type {Shape} - * @todo Needed? The shape can be looked up via contactEquation.shapeB... - */ - this.shapeB = null; - - /** - * The friction coefficient to use. - * @property frictionCoefficient - * @type {Number} - */ - this.frictionCoefficient = 0.3; -} -FrictionEquation.prototype = new Equation(); -FrictionEquation.prototype.constructor = FrictionEquation; - -/** - * Set the slipping condition for the constraint. The friction force cannot be - * larger than this value. - * @method setSlipForce - * @param {Number} slipForce - */ -FrictionEquation.prototype.setSlipForce = function(slipForce){ - this.maxForce = slipForce; - this.minForce = -slipForce; -}; - -/** - * Get the max force for the constraint. - * @method getSlipForce - * @return {Number} - */ -FrictionEquation.prototype.getSlipForce = function(){ - return this.maxForce; -}; - -FrictionEquation.prototype.computeB = function(a,b,h){ - var bi = this.bodyA, - bj = this.bodyB, - ri = this.contactPointA, - rj = this.contactPointB, - t = this.t, - G = this.G; - - // G = [-t -rixt t rjxt] - // And remember, this is a pure velocity constraint, g is always zero! - G[0] = -t[0]; - G[1] = -t[1]; - G[2] = -vec2.crossLength(ri,t); - G[3] = t[0]; - G[4] = t[1]; - G[5] = vec2.crossLength(rj,t); - - var GW = this.computeGW(), - GiMf = this.computeGiMf(); - - var B = /* - g * a */ - GW * b - h*GiMf; - - return B; -}; - -},{"../math/vec2":30,"../utils/Utils":57,"./Equation":22}],24:[function(_dereq_,module,exports){ -var Equation = _dereq_("./Equation"), - vec2 = _dereq_('../math/vec2'); - -module.exports = RotationalLockEquation; - -/** - * Locks the relative angle between two bodies. The constraint tries to keep the dot product between two vectors, local in each body, to zero. The local angle in body i is a parameter. - * - * @class RotationalLockEquation - * @constructor - * @extends Equation - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {Number} [options.angle] Angle to add to the local vector in bodyA. - */ -function RotationalLockEquation(bodyA, bodyB, options){ - options = options || {}; - Equation.call(this, bodyA, bodyB, -Number.MAX_VALUE, Number.MAX_VALUE); - - /** - * @property {number} angle - */ - this.angle = options.angle || 0; - - var G = this.G; - G[2] = 1; - G[5] = -1; -} -RotationalLockEquation.prototype = new Equation(); -RotationalLockEquation.prototype.constructor = RotationalLockEquation; - -var worldVectorA = vec2.create(), - worldVectorB = vec2.create(), - xAxis = vec2.fromValues(1,0), - yAxis = vec2.fromValues(0,1); -RotationalLockEquation.prototype.computeGq = function(){ - vec2.rotate(worldVectorA,xAxis,this.bodyA.angle+this.angle); - vec2.rotate(worldVectorB,yAxis,this.bodyB.angle); - return vec2.dot(worldVectorA,worldVectorB); -}; - -},{"../math/vec2":30,"./Equation":22}],25:[function(_dereq_,module,exports){ -var Equation = _dereq_("./Equation"), - vec2 = _dereq_('../math/vec2'); - -module.exports = RotationalVelocityEquation; - -/** - * Syncs rotational velocity of two bodies, or sets a relative velocity (motor). - * - * @class RotationalVelocityEquation - * @constructor - * @extends Equation - * @param {Body} bodyA - * @param {Body} bodyB - */ -function RotationalVelocityEquation(bodyA, bodyB){ - Equation.call(this, bodyA, bodyB, -Number.MAX_VALUE, Number.MAX_VALUE); - this.relativeVelocity = 1; - this.ratio = 1; -} -RotationalVelocityEquation.prototype = new Equation(); -RotationalVelocityEquation.prototype.constructor = RotationalVelocityEquation; -RotationalVelocityEquation.prototype.computeB = function(a,b,h){ - var G = this.G; - G[2] = -1; - G[5] = this.ratio; - - var GiMf = this.computeGiMf(); - var GW = this.computeGW(); - var B = - GW * b - h*GiMf; - - return B; -}; - -},{"../math/vec2":30,"./Equation":22}],26:[function(_dereq_,module,exports){ -/** - * Base class for objects that dispatches events. - * @class EventEmitter - * @constructor - */ -var EventEmitter = function () {}; - -module.exports = EventEmitter; - -EventEmitter.prototype = { - constructor: EventEmitter, - - /** - * Add an event listener - * @method on - * @param {String} type - * @param {Function} listener - * @return {EventEmitter} The self object, for chainability. - */ - on: function ( type, listener, context ) { - listener.context = context || this; - if ( this._listeners === undefined ){ - this._listeners = {}; - } - var listeners = this._listeners; - if ( listeners[ type ] === undefined ) { - listeners[ type ] = []; - } - if ( listeners[ type ].indexOf( listener ) === - 1 ) { - listeners[ type ].push( listener ); - } - return this; - }, - - /** - * Check if an event listener is added - * @method has - * @param {String} type - * @param {Function} listener - * @return {Boolean} - */ - has: function ( type, listener ) { - if ( this._listeners === undefined ){ - return false; - } - var listeners = this._listeners; - if(listener){ - if ( listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1 ) { - return true; - } - } else { - if ( listeners[ type ] !== undefined ) { - return true; - } - } - - return false; - }, - - /** - * Remove an event listener - * @method off - * @param {String} type - * @param {Function} listener - * @return {EventEmitter} The self object, for chainability. - */ - off: function ( type, listener ) { - if ( this._listeners === undefined ){ - return this; - } - var listeners = this._listeners; - var index = listeners[ type ].indexOf( listener ); - if ( index !== - 1 ) { - listeners[ type ].splice( index, 1 ); - } - return this; - }, - - /** - * Emit an event. - * @method emit - * @param {Object} event - * @param {String} event.type - * @return {EventEmitter} The self object, for chainability. - */ - emit: function ( event ) { - if ( this._listeners === undefined ){ - return this; - } - var listeners = this._listeners; - var listenerArray = listeners[ event.type ]; - if ( listenerArray !== undefined ) { - event.target = this; - for ( var i = 0, l = listenerArray.length; i < l; i ++ ) { - var listener = listenerArray[ i ]; - listener.call( listener.context, event ); - } - } - return this; - } -}; - -},{}],27:[function(_dereq_,module,exports){ -var Material = _dereq_('./Material'); -var Equation = _dereq_('../equations/Equation'); - -module.exports = ContactMaterial; - -/** - * Defines what happens when two materials meet, such as what friction coefficient to use. You can also set other things such as restitution, surface velocity and constraint parameters. - * @class ContactMaterial - * @constructor - * @param {Material} materialA - * @param {Material} materialB - * @param {Object} [options] - * @param {Number} [options.friction=0.3] Friction coefficient. - * @param {Number} [options.restitution=0] Restitution coefficient aka "bounciness". - * @param {Number} [options.stiffness] ContactEquation stiffness. - * @param {Number} [options.relaxation] ContactEquation relaxation. - * @param {Number} [options.frictionStiffness] FrictionEquation stiffness. - * @param {Number} [options.frictionRelaxation] FrictionEquation relaxation. - * @param {Number} [options.surfaceVelocity=0] Surface velocity. - * @author schteppe - */ -function ContactMaterial(materialA, materialB, options){ - options = options || {}; - - if(!(materialA instanceof Material) || !(materialB instanceof Material)){ - throw new Error("First two arguments must be Material instances."); - } - - /** - * The contact material identifier - * @property id - * @type {Number} - */ - this.id = ContactMaterial.idCounter++; - - /** - * First material participating in the contact material - * @property materialA - * @type {Material} - */ - this.materialA = materialA; - - /** - * Second material participating in the contact material - * @property materialB - * @type {Material} - */ - this.materialB = materialB; - - /** - * Friction to use in the contact of these two materials - * @property friction - * @type {Number} - */ - this.friction = typeof(options.friction) !== "undefined" ? Number(options.friction) : 0.3; - - /** - * Restitution to use in the contact of these two materials - * @property restitution - * @type {Number} - */ - this.restitution = typeof(options.restitution) !== "undefined" ? Number(options.restitution) : 0.0; - - /** - * Stiffness of the resulting ContactEquation that this ContactMaterial generate - * @property stiffness - * @type {Number} - */ - this.stiffness = typeof(options.stiffness) !== "undefined" ? Number(options.stiffness) : Equation.DEFAULT_STIFFNESS; - - /** - * Relaxation of the resulting ContactEquation that this ContactMaterial generate - * @property relaxation - * @type {Number} - */ - this.relaxation = typeof(options.relaxation) !== "undefined" ? Number(options.relaxation) : Equation.DEFAULT_RELAXATION; - - /** - * Stiffness of the resulting FrictionEquation that this ContactMaterial generate - * @property frictionStiffness - * @type {Number} - */ - this.frictionStiffness = typeof(options.frictionStiffness) !== "undefined" ? Number(options.frictionStiffness) : Equation.DEFAULT_STIFFNESS; - - /** - * Relaxation of the resulting FrictionEquation that this ContactMaterial generate - * @property frictionRelaxation - * @type {Number} - */ - this.frictionRelaxation = typeof(options.frictionRelaxation) !== "undefined" ? Number(options.frictionRelaxation) : Equation.DEFAULT_RELAXATION; - - /** - * Will add surface velocity to this material. If bodyA rests on top if bodyB, and the surface velocity is positive, bodyA will slide to the right. - * @property {Number} surfaceVelocity - */ - this.surfaceVelocity = typeof(options.surfaceVelocity) !== "undefined" ? Number(options.surfaceVelocity) : 0; - - /** - * Offset to be set on ContactEquations. A positive value will make the bodies penetrate more into each other. Can be useful in scenes where contacts need to be more persistent, for example when stacking. Aka "cure for nervous contacts". - * @property contactSkinSize - * @type {Number} - */ - this.contactSkinSize = 0.005; -} - -ContactMaterial.idCounter = 0; - -},{"../equations/Equation":22,"./Material":28}],28:[function(_dereq_,module,exports){ -module.exports = Material; - -/** - * Defines a physics material. - * @class Material - * @constructor - * @param {number} id Material identifier - * @author schteppe - */ -function Material(id){ - /** - * The material identifier - * @property id - * @type {Number} - */ - this.id = id || Material.idCounter++; -} - -Material.idCounter = 0; - -},{}],29:[function(_dereq_,module,exports){ - - /* - PolyK library - url: http://polyk.ivank.net - Released under MIT licence. - - Copyright (c) 2012 Ivan Kuckir - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - */ - - var PolyK = {}; - - /* - Is Polygon self-intersecting? - - O(n^2) - */ - /* - PolyK.IsSimple = function(p) - { - var n = p.length>>1; - if(n<4) return true; - var a1 = new PolyK._P(), a2 = new PolyK._P(); - var b1 = new PolyK._P(), b2 = new PolyK._P(); - var c = new PolyK._P(); - - for(var i=0; i>1; - if(n<3) return []; - var tgs = []; - var avl = []; - for(var i=0; i 3) - { - var i0 = avl[(i+0)%al]; - var i1 = avl[(i+1)%al]; - var i2 = avl[(i+2)%al]; - - var ax = p[2*i0], ay = p[2*i0+1]; - var bx = p[2*i1], by = p[2*i1+1]; - var cx = p[2*i2], cy = p[2*i2+1]; - - var earFound = false; - if(PolyK._convex(ax, ay, bx, by, cx, cy)) - { - earFound = true; - for(var j=0; j 3*al) break; // no convex angles :( - } - tgs.push(avl[0], avl[1], avl[2]); - return tgs; - } - /* - PolyK.ContainsPoint = function(p, px, py) - { - var n = p.length>>1; - var ax, ay, bx = p[2*n-2]-px, by = p[2*n-1]-py; - var depth = 0; - for(var i=0; i=0 && by>=0) continue; // both "up" or both "donw" - if(ax< 0 && bx< 0) continue; - - var lx = ax + (bx-ax)*(-ay)/(by-ay); - if(lx>0) depth++; - } - return (depth & 1) == 1; - } - - PolyK.Slice = function(p, ax, ay, bx, by) - { - if(PolyK.ContainsPoint(p, ax, ay) || PolyK.ContainsPoint(p, bx, by)) return [p.slice(0)]; - - var a = new PolyK._P(ax, ay); - var b = new PolyK._P(bx, by); - var iscs = []; // intersections - var ps = []; // points - for(var i=0; i 0) - { - var n = ps.length; - var i0 = iscs[0]; - var i1 = iscs[1]; - var ind0 = ps.indexOf(i0); - var ind1 = ps.indexOf(i1); - var solved = false; - - if(PolyK._firstWithFlag(ps, ind0) == ind1) solved = true; - else - { - i0 = iscs[1]; - i1 = iscs[0]; - ind0 = ps.indexOf(i0); - ind1 = ps.indexOf(i1); - if(PolyK._firstWithFlag(ps, ind0) == ind1) solved = true; - } - if(solved) - { - dir--; - var pgn = PolyK._getPoints(ps, ind0, ind1); - pgs.push(pgn); - ps = PolyK._getPoints(ps, ind1, ind0); - i0.flag = i1.flag = false; - iscs.splice(0,2); - if(iscs.length == 0) pgs.push(ps); - } - else { dir++; iscs.reverse(); } - if(dir>1) break; - } - var result = []; - for(var i=0; i>1, isc); - } - b1.x = b2.x; b1.y = b2.y; - b2.x = p[0]; b2.y = p[1]; - PolyK._pointLineDist(a1, b1, b2, l>>1, isc); - - var idst = 1/isc.dist; - isc.norm.x = (x-isc.point.x)*idst; - isc.norm.y = (y-isc.point.y)*idst; - return isc; - } - - PolyK._pointLineDist = function(p, a, b, edge, isc) - { - var x = p.x, y = p.y, x1 = a.x, y1 = a.y, x2 = b.x, y2 = b.y; - - var A = x - x1; - var B = y - y1; - var C = x2 - x1; - var D = y2 - y1; - - var dot = A * C + B * D; - var len_sq = C * C + D * D; - var param = dot / len_sq; - - var xx, yy; - - if (param < 0 || (x1 == x2 && y1 == y2)) { - xx = x1; - yy = y1; - } - else if (param > 1) { - xx = x2; - yy = y2; - } - else { - xx = x1 + param * C; - yy = y1 + param * D; - } - - var dx = x - xx; - var dy = y - yy; - var dst = Math.sqrt(dx * dx + dy * dy); - if(dst= 0) && (v >= 0) && (u + v < 1); - } - /* - PolyK._RayLineIntersection = function(a1, a2, b1, b2, c) - { - var dax = (a1.x-a2.x), dbx = (b1.x-b2.x); - var day = (a1.y-a2.y), dby = (b1.y-b2.y); - - var Den = dax*dby - day*dbx; - if (Den == 0) return null; // parallel - - var A = (a1.x * a2.y - a1.y * a2.x); - var B = (b1.x * b2.y - b1.y * b2.x); - - var I = c; - var iDen = 1/Den; - I.x = ( A*dbx - dax*B ) * iDen; - I.y = ( A*dby - day*B ) * iDen; - - if(!PolyK._InRect(I, b1, b2)) return null; - if((day>0 && I.y>a1.y) || (day<0 && I.y0 && I.x>a1.x) || (dax<0 && I.x=Math.min(b.y, c.y) && a.y<=Math.max(b.y, c.y)); - if (b.y == c.y) return (a.x>=Math.min(b.x, c.x) && a.x<=Math.max(b.x, c.x)); - - if(a.x >= Math.min(b.x, c.x) && a.x <= Math.max(b.x, c.x) - && a.y >= Math.min(b.y, c.y) && a.y <= Math.max(b.y, c.y)) - return true; - return false; - } - */ - PolyK._convex = function(ax, ay, bx, by, cx, cy) - { - return (ay-by)*(cx-bx) + (bx-ax)*(cy-by) >= 0; - } - /* - PolyK._P = function(x,y) - { - this.x = x; - this.y = y; - this.flag = false; - } - PolyK._P.prototype.toString = function() - { - return "Point ["+this.x+", "+this.y+"]"; - } - PolyK._P.dist = function(a,b) - { - var dx = b.x-a.x; - var dy = b.y-a.y; - return Math.sqrt(dx*dx + dy*dy); - } - - PolyK._tp = []; - for(var i=0; i<10; i++) PolyK._tp.push(new PolyK._P(0,0)); - */ - -module.exports = PolyK; - -},{}],30:[function(_dereq_,module,exports){ -/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -/** - * The vec2 object from glMatrix, with some extensions and some removed methods. See http://glmatrix.net. - * @class vec2 - */ - -var vec2 = module.exports = {}; - -var Utils = _dereq_('../utils/Utils'); - -/** - * Make a cross product and only return the z component - * @method crossLength - * @static - * @param {Array} a - * @param {Array} b - * @return {Number} - */ -vec2.crossLength = function(a,b){ - return a[0] * b[1] - a[1] * b[0]; -}; - -/** - * Cross product between a vector and the Z component of a vector - * @method crossVZ - * @static - * @param {Array} out - * @param {Array} vec - * @param {Number} zcomp - * @return {Number} - */ -vec2.crossVZ = function(out, vec, zcomp){ - vec2.rotate(out,vec,-Math.PI/2);// Rotate according to the right hand rule - vec2.scale(out,out,zcomp); // Scale with z - return out; -}; - -/** - * Cross product between a vector and the Z component of a vector - * @method crossZV - * @static - * @param {Array} out - * @param {Number} zcomp - * @param {Array} vec - * @return {Number} - */ -vec2.crossZV = function(out, zcomp, vec){ - vec2.rotate(out,vec,Math.PI/2); // Rotate according to the right hand rule - vec2.scale(out,out,zcomp); // Scale with z - return out; -}; - -/** - * Rotate a vector by an angle - * @method rotate - * @static - * @param {Array} out - * @param {Array} a - * @param {Number} angle - */ -vec2.rotate = function(out,a,angle){ - if(angle !== 0){ - var c = Math.cos(angle), - s = Math.sin(angle), - x = a[0], - y = a[1]; - out[0] = c*x -s*y; - out[1] = s*x +c*y; - } else { - out[0] = a[0]; - out[1] = a[1]; - } -}; - -/** - * Rotate a vector 90 degrees clockwise - * @method rotate90cw - * @static - * @param {Array} out - * @param {Array} a - * @param {Number} angle - */ -vec2.rotate90cw = function(out, a) { - var x = a[0]; - var y = a[1]; - out[0] = y; - out[1] = -x; -}; - -/** - * Transform a point position to local frame. - * @method toLocalFrame - * @param {Array} out - * @param {Array} worldPoint - * @param {Array} framePosition - * @param {Number} frameAngle - */ -vec2.toLocalFrame = function(out, worldPoint, framePosition, frameAngle){ - vec2.copy(out, worldPoint); - vec2.sub(out, out, framePosition); - vec2.rotate(out, out, -frameAngle); -}; - -/** - * Transform a point position to global frame. - * @method toGlobalFrame - * @param {Array} out - * @param {Array} localPoint - * @param {Array} framePosition - * @param {Number} frameAngle - */ -vec2.toGlobalFrame = function(out, localPoint, framePosition, frameAngle){ - vec2.copy(out, localPoint); - vec2.rotate(out, out, frameAngle); - vec2.add(out, out, framePosition); -}; - -/** - * Transform a vector to local frame. - * @method vectorToLocalFrame - * @param {Array} out - * @param {Array} worldVector - * @param {Number} frameAngle - */ -vec2.vectorToLocalFrame = function(out, worldVector, frameAngle){ - vec2.rotate(out, worldVector, -frameAngle); -}; - -/** - * Transform a point position to global frame. - * @method toGlobalFrame - * @param {Array} out - * @param {Array} localVector - * @param {Number} frameAngle - */ -vec2.vectorToGlobalFrame = function(out, localVector, frameAngle){ - vec2.rotate(out, localVector, frameAngle); -}; - -/** - * Compute centroid of a triangle spanned by vectors a,b,c. See http://easycalculation.com/analytical/learn-centroid.php - * @method centroid - * @static - * @param {Array} out - * @param {Array} a - * @param {Array} b - * @param {Array} c - * @return {Array} The out object - */ -vec2.centroid = function(out, a, b, c){ - vec2.add(out, a, b); - vec2.add(out, out, c); - vec2.scale(out, out, 1/3); - return out; -}; - -/** - * Creates a new, empty vec2 - * @static - * @method create - * @return {Array} a new 2D vector - */ -vec2.create = function() { - var out = new Utils.ARRAY_TYPE(2); - out[0] = 0; - out[1] = 0; - return out; -}; - -/** - * Creates a new vec2 initialized with values from an existing vector - * @static - * @method clone - * @param {Array} a vector to clone - * @return {Array} a new 2D vector - */ -vec2.clone = function(a) { - var out = new Utils.ARRAY_TYPE(2); - out[0] = a[0]; - out[1] = a[1]; - return out; -}; - -/** - * Creates a new vec2 initialized with the given values - * @static - * @method fromValues - * @param {Number} x X component - * @param {Number} y Y component - * @return {Array} a new 2D vector - */ -vec2.fromValues = function(x, y) { - var out = new Utils.ARRAY_TYPE(2); - out[0] = x; - out[1] = y; - return out; -}; - -/** - * Copy the values from one vec2 to another - * @static - * @method copy - * @param {Array} out the receiving vector - * @param {Array} a the source vector - * @return {Array} out - */ -vec2.copy = function(out, a) { - out[0] = a[0]; - out[1] = a[1]; - return out; -}; - -/** - * Set the components of a vec2 to the given values - * @static - * @method set - * @param {Array} out the receiving vector - * @param {Number} x X component - * @param {Number} y Y component - * @return {Array} out - */ -vec2.set = function(out, x, y) { - out[0] = x; - out[1] = y; - return out; -}; - -/** - * Adds two vec2's - * @static - * @method add - * @param {Array} out the receiving vector - * @param {Array} a the first operand - * @param {Array} b the second operand - * @return {Array} out - */ -vec2.add = function(out, a, b) { - out[0] = a[0] + b[0]; - out[1] = a[1] + b[1]; - return out; -}; - -/** - * Subtracts two vec2's - * @static - * @method subtract - * @param {Array} out the receiving vector - * @param {Array} a the first operand - * @param {Array} b the second operand - * @return {Array} out - */ -vec2.subtract = function(out, a, b) { - out[0] = a[0] - b[0]; - out[1] = a[1] - b[1]; - return out; -}; - -/** - * Alias for vec2.subtract - * @static - * @method sub - */ -vec2.sub = vec2.subtract; - -/** - * Multiplies two vec2's - * @static - * @method multiply - * @param {Array} out the receiving vector - * @param {Array} a the first operand - * @param {Array} b the second operand - * @return {Array} out - */ -vec2.multiply = function(out, a, b) { - out[0] = a[0] * b[0]; - out[1] = a[1] * b[1]; - return out; -}; - -/** - * Alias for vec2.multiply - * @static - * @method mul - */ -vec2.mul = vec2.multiply; - -/** - * Divides two vec2's - * @static - * @method divide - * @param {Array} out the receiving vector - * @param {Array} a the first operand - * @param {Array} b the second operand - * @return {Array} out - */ -vec2.divide = function(out, a, b) { - out[0] = a[0] / b[0]; - out[1] = a[1] / b[1]; - return out; -}; - -/** - * Alias for vec2.divide - * @static - * @method div - */ -vec2.div = vec2.divide; - -/** - * Scales a vec2 by a scalar number - * @static - * @method scale - * @param {Array} out the receiving vector - * @param {Array} a the vector to scale - * @param {Number} b amount to scale the vector by - * @return {Array} out - */ -vec2.scale = function(out, a, b) { - out[0] = a[0] * b; - out[1] = a[1] * b; - return out; -}; - -/** - * Calculates the euclidian distance between two vec2's - * @static - * @method distance - * @param {Array} a the first operand - * @param {Array} b the second operand - * @return {Number} distance between a and b - */ -vec2.distance = function(a, b) { - var x = b[0] - a[0], - y = b[1] - a[1]; - return Math.sqrt(x*x + y*y); -}; - -/** - * Alias for vec2.distance - * @static - * @method dist - */ -vec2.dist = vec2.distance; - -/** - * Calculates the squared euclidian distance between two vec2's - * @static - * @method squaredDistance - * @param {Array} a the first operand - * @param {Array} b the second operand - * @return {Number} squared distance between a and b - */ -vec2.squaredDistance = function(a, b) { - var x = b[0] - a[0], - y = b[1] - a[1]; - return x*x + y*y; -}; - -/** - * Alias for vec2.squaredDistance - * @static - * @method sqrDist - */ -vec2.sqrDist = vec2.squaredDistance; - -/** - * Calculates the length of a vec2 - * @static - * @method length - * @param {Array} a vector to calculate length of - * @return {Number} length of a - */ -vec2.length = function (a) { - var x = a[0], - y = a[1]; - return Math.sqrt(x*x + y*y); -}; - -/** - * Alias for vec2.length - * @method len - * @static - */ -vec2.len = vec2.length; - -/** - * Calculates the squared length of a vec2 - * @static - * @method squaredLength - * @param {Array} a vector to calculate squared length of - * @return {Number} squared length of a - */ -vec2.squaredLength = function (a) { - var x = a[0], - y = a[1]; - return x*x + y*y; -}; - -/** - * Alias for vec2.squaredLength - * @static - * @method sqrLen - */ -vec2.sqrLen = vec2.squaredLength; - -/** - * Negates the components of a vec2 - * @static - * @method negate - * @param {Array} out the receiving vector - * @param {Array} a vector to negate - * @return {Array} out - */ -vec2.negate = function(out, a) { - out[0] = -a[0]; - out[1] = -a[1]; - return out; -}; - -/** - * Normalize a vec2 - * @static - * @method normalize - * @param {Array} out the receiving vector - * @param {Array} a vector to normalize - * @return {Array} out - */ -vec2.normalize = function(out, a) { - var x = a[0], - y = a[1]; - var len = x*x + y*y; - if (len > 0) { - //TODO: evaluate use of glm_invsqrt here? - len = 1 / Math.sqrt(len); - out[0] = a[0] * len; - out[1] = a[1] * len; - } - return out; -}; - -/** - * Calculates the dot product of two vec2's - * @static - * @method dot - * @param {Array} a the first operand - * @param {Array} b the second operand - * @return {Number} dot product of a and b - */ -vec2.dot = function (a, b) { - return a[0] * b[0] + a[1] * b[1]; -}; - -/** - * Returns a string representation of a vector - * @static - * @method str - * @param {Array} vec vector to represent as a string - * @return {String} string representation of the vector - */ -vec2.str = function (a) { - return 'vec2(' + a[0] + ', ' + a[1] + ')'; -}; - -/** - * Linearly interpolate/mix two vectors. - * @static - * @method lerp - * @param {Array} out - * @param {Array} a First vector - * @param {Array} b Second vector - * @param {number} t Lerp factor - */ -vec2.lerp = function (out, a, b, t) { - var ax = a[0], - ay = a[1]; - out[0] = ax + t * (b[0] - ax); - out[1] = ay + t * (b[1] - ay); - return out; -}; - -/** - * Reflect a vector along a normal. - * @static - * @method reflect - * @param {Array} out - * @param {Array} vector - * @param {Array} normal - */ -vec2.reflect = function(out, vector, normal){ - var dot = vector[0] * normal[0] + vector[1] * normal[1]; - out[0] = vector[0] - 2 * normal[0] * dot; - out[1] = vector[1] - 2 * normal[1] * dot; -}; - -/** - * Get the intersection point between two line segments. - * @static - * @method getLineSegmentsIntersection - * @param {Array} out - * @param {Array} p0 - * @param {Array} p1 - * @param {Array} p2 - * @param {Array} p3 - * @return {boolean} True if there was an intersection, otherwise false. - */ -vec2.getLineSegmentsIntersection = function(out, p0, p1, p2, p3) { - var t = vec2.getLineSegmentsIntersectionFraction(p0, p1, p2, p3); - if(t < 0){ - return false; - } else { - out[0] = p0[0] + (t * (p1[0] - p0[0])); - out[1] = p0[1] + (t * (p1[1] - p0[1])); - return true; - } -}; - -/** - * Get the intersection fraction between two line segments. If successful, the intersection is at p0 + t * (p1 - p0) - * @static - * @method getLineSegmentsIntersectionFraction - * @param {Array} p0 - * @param {Array} p1 - * @param {Array} p2 - * @param {Array} p3 - * @return {number} A number between 0 and 1 if there was an intersection, otherwise -1. - */ -vec2.getLineSegmentsIntersectionFraction = function(p0, p1, p2, p3) { - var s1_x = p1[0] - p0[0]; - var s1_y = p1[1] - p0[1]; - var s2_x = p3[0] - p2[0]; - var s2_y = p3[1] - p2[1]; - - var s, t; - s = (-s1_y * (p0[0] - p2[0]) + s1_x * (p0[1] - p2[1])) / (-s2_x * s1_y + s1_x * s2_y); - t = ( s2_x * (p0[1] - p2[1]) - s2_y * (p0[0] - p2[0])) / (-s2_x * s1_y + s1_x * s2_y); - if (s >= 0 && s <= 1 && t >= 0 && t <= 1) { // Collision detected - return t; - } - return -1; // No collision -}; - -},{"../utils/Utils":57}],31:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2') -, decomp = _dereq_('poly-decomp') -, Convex = _dereq_('../shapes/Convex') -, RaycastResult = _dereq_('../collision/RaycastResult') -, Ray = _dereq_('../collision/Ray') -, AABB = _dereq_('../collision/AABB') -, EventEmitter = _dereq_('../events/EventEmitter'); - -module.exports = Body; - -/** - * A rigid body. Has got a center of mass, position, velocity and a number of - * shapes that are used for collisions. - * - * @class Body - * @constructor - * @extends EventEmitter - * @param {Array} [options.force] - * @param {Array} [options.position] - * @param {Array} [options.velocity] - * @param {Boolean} [options.allowSleep] - * @param {Boolean} [options.collisionResponse] - * @param {Number} [options.angle=0] - * @param {Number} [options.angularForce=0] - * @param {Number} [options.angularVelocity=0] - * @param {Number} [options.ccdIterations=10] - * @param {Number} [options.ccdSpeedThreshold=-1] - * @param {Number} [options.fixedRotation=false] - * @param {Number} [options.gravityScale] - * @param {Number} [options.id] - * @param {Number} [options.mass=0] A number >= 0. If zero, the .type will be set to Body.STATIC. - * @param {Number} [options.sleepSpeedLimit] - * @param {Number} [options.sleepTimeLimit] - * @param {Object} [options] - * - * @example - * - * // Create a typical dynamic body - * var body = new Body({ - * mass: 1, - * position: [0, 0], - * angle: 0, - * velocity: [0, 0], - * angularVelocity: 0 - * }); - * - * // Add a circular shape to the body - * body.addShape(new Circle({ radius: 1 })); - * - * // Add the body to the world - * world.addBody(body); - */ -function Body(options){ - options = options || {}; - - EventEmitter.call(this); - - /** - * The body identifyer - * @property id - * @type {Number} - */ - this.id = options.id || ++Body._idCounter; - - /** - * The world that this body is added to. This property is set to NULL if the body is not added to any world. - * @property world - * @type {World} - */ - this.world = null; - - /** - * The shapes of the body. - * - * @property shapes - * @type {Array} - */ - this.shapes = []; - - /** - * The mass of the body. - * @property mass - * @type {number} - */ - this.mass = options.mass || 0; - - /** - * The inverse mass of the body. - * @property invMass - * @type {number} - */ - this.invMass = 0; - - /** - * The inertia of the body around the Z axis. - * @property inertia - * @type {number} - */ - this.inertia = 0; - - /** - * The inverse inertia of the body. - * @property invInertia - * @type {number} - */ - this.invInertia = 0; - - this.invMassSolve = 0; - this.invInertiaSolve = 0; - - /** - * Set to true if you want to fix the rotation of the body. - * @property fixedRotation - * @type {Boolean} - */ - this.fixedRotation = !!options.fixedRotation; - - /** - * Set to true if you want to fix the body movement along the X axis. The body will still be able to move along Y. - * @property {Boolean} fixedX - */ - this.fixedX = !!options.fixedX; - - /** - * Set to true if you want to fix the body movement along the Y axis. The body will still be able to move along X. - * @property {Boolean} fixedY - */ - this.fixedY = !!options.fixedY; - - /** - * @private - * @property {array} massMultiplier - */ - this.massMultiplier = vec2.create(); - - /** - * The position of the body - * @property position - * @type {Array} - */ - this.position = vec2.fromValues(0,0); - if(options.position){ - vec2.copy(this.position, options.position); - } - - /** - * The interpolated position of the body. Use this for rendering. - * @property interpolatedPosition - * @type {Array} - */ - this.interpolatedPosition = vec2.fromValues(0,0); - - /** - * The interpolated angle of the body. Use this for rendering. - * @property interpolatedAngle - * @type {Number} - */ - this.interpolatedAngle = 0; - - /** - * The previous position of the body. - * @property previousPosition - * @type {Array} - */ - this.previousPosition = vec2.fromValues(0,0); - - /** - * The previous angle of the body. - * @property previousAngle - * @type {Number} - */ - this.previousAngle = 0; - - /** - * The current velocity of the body. - * @property velocity - * @type {Array} - */ - this.velocity = vec2.fromValues(0,0); - if(options.velocity){ - vec2.copy(this.velocity, options.velocity); - } - - /** - * Constraint velocity that was added to the body during the last step. - * @property vlambda - * @type {Array} - */ - this.vlambda = vec2.fromValues(0,0); - - /** - * Angular constraint velocity that was added to the body during last step. - * @property wlambda - * @type {Array} - */ - this.wlambda = 0; - - /** - * The angle of the body, in radians. - * @property angle - * @type {number} - * @example - * // The angle property is not normalized to the interval 0 to 2*pi, it can be any value. - * // If you need a value between 0 and 2*pi, use the following function to normalize it. - * function normalizeAngle(angle){ - * angle = angle % (2*Math.PI); - * if(angle < 0){ - * angle += (2*Math.PI); - * } - * return angle; - * } - */ - this.angle = options.angle || 0; - - /** - * The angular velocity of the body, in radians per second. - * @property angularVelocity - * @type {number} - */ - this.angularVelocity = options.angularVelocity || 0; - - /** - * The force acting on the body. Since the body force (and {{#crossLink "Body/angularForce:property"}}{{/crossLink}}) will be zeroed after each step, so you need to set the force before each step. - * @property force - * @type {Array} - * - * @example - * // This produces a forcefield of 1 Newton in the positive x direction. - * for(var i=0; i radius){ - radius = offset + r; - } - } - - this.boundingRadius = radius; -}; - -/** - * Add a shape to the body. You can pass a local transform when adding a shape, - * so that the shape gets an offset and angle relative to the body center of mass. - * Will automatically update the mass properties and bounding radius. - * - * @method addShape - * @param {Shape} shape - * @param {Array} [offset] Local body offset of the shape. - * @param {Number} [angle] Local body angle. - * - * @example - * var body = new Body(), - * shape = new Circle({ radius: 1 }); - * - * // Add the shape to the body, positioned in the center - * body.addShape(shape); - * - * // Add another shape to the body, positioned 1 unit length from the body center of mass along the local x-axis. - * body.addShape(shape,[1,0]); - * - * // Add another shape to the body, positioned 1 unit length from the body center of mass along the local y-axis, and rotated 90 degrees CCW. - * body.addShape(shape,[0,1],Math.PI/2); - */ -Body.prototype.addShape = function(shape, offset, angle){ - if(shape.body){ - throw new Error('A shape can only be added to one body.'); - } - shape.body = this; - - // Copy the offset vector - if(offset){ - vec2.copy(shape.position, offset); - } else { - vec2.set(shape.position, 0, 0); - } - - shape.angle = angle || 0; - - this.shapes.push(shape); - this.updateMassProperties(); - this.updateBoundingRadius(); - - this.aabbNeedsUpdate = true; -}; - -/** - * Remove a shape - * @method removeShape - * @param {Shape} shape - * @return {Boolean} True if the shape was found and removed, else false. - */ -Body.prototype.removeShape = function(shape){ - var idx = this.shapes.indexOf(shape); - - if(idx !== -1){ - this.shapes.splice(idx,1); - this.aabbNeedsUpdate = true; - shape.body = null; - return true; - } else { - return false; - } -}; - -/** - * Updates .inertia, .invMass, .invInertia for this Body. Should be called when - * changing the structure or mass of the Body. - * - * @method updateMassProperties - * - * @example - * body.mass += 1; - * body.updateMassProperties(); - */ -Body.prototype.updateMassProperties = function(){ - if(this.type === Body.STATIC || this.type === Body.KINEMATIC){ - - this.mass = Number.MAX_VALUE; - this.invMass = 0; - this.inertia = Number.MAX_VALUE; - this.invInertia = 0; - - } else { - - var shapes = this.shapes, - N = shapes.length, - m = this.mass / N, - I = 0; - - if(!this.fixedRotation){ - for(var i=0; i0 ? 1/I : 0; - - } else { - this.inertia = Number.MAX_VALUE; - this.invInertia = 0; - } - - // Inverse mass properties are easy - this.invMass = 1 / this.mass; - - vec2.set( - this.massMultiplier, - this.fixedX ? 0 : 1, - this.fixedY ? 0 : 1 - ); - } -}; - -var Body_applyForce_r = vec2.create(); - -/** - * Apply force to a point relative to the center of mass of the body. This could for example be a point on the RigidBody surface. Applying force this way will add to Body.force and Body.angularForce. If relativePoint is zero, the force will be applied directly on the center of mass, and the torque produced will be zero. - * @method applyForce - * @param {Array} force The force to add. - * @param {Array} [relativePoint] A world point to apply the force on. - */ -Body.prototype.applyForce = function(force, relativePoint){ - - // Add linear force - vec2.add(this.force, this.force, force); - - if(relativePoint){ - - // Compute produced rotational force - var rotForce = vec2.crossLength(relativePoint,force); - - // Add rotational force - this.angularForce += rotForce; - } -}; - -/** - * Apply force to a body-local point. - * @method applyForceLocal - * @param {Array} localForce The force vector to add, oriented in local body space. - * @param {Array} localPoint A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be excerted on the center of mass. - */ -var Body_applyForce_forceWorld = vec2.create(); -var Body_applyForce_pointWorld = vec2.create(); -var Body_applyForce_pointLocal = vec2.create(); -Body.prototype.applyForceLocal = function(localForce, localPoint){ - localPoint = localPoint || Body_applyForce_pointLocal; - var worldForce = Body_applyForce_forceWorld; - var worldPoint = Body_applyForce_pointWorld; - this.vectorToWorldFrame(worldForce, localForce); - this.vectorToWorldFrame(worldPoint, localPoint); - this.applyForce(worldForce, worldPoint); -}; - -/** - * Apply impulse to a point relative to the body. This could for example be a point on the Body surface. An impulse is a force added to a body during a short period of time (impulse = force * time). Impulses will be added to Body.velocity and Body.angularVelocity. - * @method applyImpulse - * @param {Array} impulse The impulse vector to add, oriented in world space. - * @param {Array} [relativePoint] A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be excerted on the center of mass. - */ -var Body_applyImpulse_velo = vec2.create(); -Body.prototype.applyImpulse = function(impulseVector, relativePoint){ - if(this.type !== Body.DYNAMIC){ - return; - } - - // Compute produced central impulse velocity - var velo = Body_applyImpulse_velo; - vec2.scale(velo, impulseVector, this.invMass); - vec2.multiply(velo, this.massMultiplier, velo); - - // Add linear impulse - vec2.add(this.velocity, velo, this.velocity); - - if(relativePoint){ - // Compute produced rotational impulse velocity - var rotVelo = vec2.crossLength(relativePoint, impulseVector); - rotVelo *= this.invInertia; - - // Add rotational Impulse - this.angularVelocity += rotVelo; - } -}; - -/** - * Apply impulse to a point relative to the body. This could for example be a point on the Body surface. An impulse is a force added to a body during a short period of time (impulse = force * time). Impulses will be added to Body.velocity and Body.angularVelocity. - * @method applyImpulseLocal - * @param {Array} impulse The impulse vector to add, oriented in world space. - * @param {Array} [relativePoint] A point relative to the body in world space. If not given, it is set to zero and all of the impulse will be excerted on the center of mass. - */ -var Body_applyImpulse_impulseWorld = vec2.create(); -var Body_applyImpulse_pointWorld = vec2.create(); -var Body_applyImpulse_pointLocal = vec2.create(); -Body.prototype.applyImpulseLocal = function(localImpulse, localPoint){ - localPoint = localPoint || Body_applyImpulse_pointLocal; - var worldImpulse = Body_applyImpulse_impulseWorld; - var worldPoint = Body_applyImpulse_pointWorld; - this.vectorToWorldFrame(worldImpulse, localImpulse); - this.vectorToWorldFrame(worldPoint, localPoint); - this.applyImpulse(worldImpulse, worldPoint); -}; - -/** - * Transform a world point to local body frame. - * @method toLocalFrame - * @param {Array} out The vector to store the result in - * @param {Array} worldPoint The input world point - */ -Body.prototype.toLocalFrame = function(out, worldPoint){ - vec2.toLocalFrame(out, worldPoint, this.position, this.angle); -}; - -/** - * Transform a local point to world frame. - * @method toWorldFrame - * @param {Array} out The vector to store the result in - * @param {Array} localPoint The input local point - */ -Body.prototype.toWorldFrame = function(out, localPoint){ - vec2.toGlobalFrame(out, localPoint, this.position, this.angle); -}; - -/** - * Transform a world point to local body frame. - * @method vectorToLocalFrame - * @param {Array} out The vector to store the result in - * @param {Array} worldVector The input world vector - */ -Body.prototype.vectorToLocalFrame = function(out, worldVector){ - vec2.vectorToLocalFrame(out, worldVector, this.angle); -}; - -/** - * Transform a local point to world frame. - * @method vectorToWorldFrame - * @param {Array} out The vector to store the result in - * @param {Array} localVector The input local vector - */ -Body.prototype.vectorToWorldFrame = function(out, localVector){ - vec2.vectorToGlobalFrame(out, localVector, this.angle); -}; - -/** - * Reads a polygon shape path, and assembles convex shapes from that and puts them at proper offset points. - * @method fromPolygon - * @param {Array} path An array of 2d vectors, e.g. [[0,0],[0,1],...] that resembles a concave or convex polygon. The shape must be simple and without holes. - * @param {Object} [options] - * @param {Boolean} [options.optimalDecomp=false] Set to true if you need optimal decomposition. Warning: very slow for polygons with more than 10 vertices. - * @param {Boolean} [options.skipSimpleCheck=false] Set to true if you already know that the path is not intersecting itself. - * @param {Boolean|Number} [options.removeCollinearPoints=false] Set to a number (angle threshold value) to remove collinear points, or false to keep all points. - * @return {Boolean} True on success, else false. - */ -Body.prototype.fromPolygon = function(path,options){ - options = options || {}; - - // Remove all shapes - for(var i=this.shapes.length; i>=0; --i){ - this.removeShape(this.shapes[i]); - } - - var p = new decomp.Polygon(); - p.vertices = path; - - // Make it counter-clockwise - p.makeCCW(); - - if(typeof(options.removeCollinearPoints) === "number"){ - p.removeCollinearPoints(options.removeCollinearPoints); - } - - // Check if any line segment intersects the path itself - if(typeof(options.skipSimpleCheck) === "undefined"){ - if(!p.isSimple()){ - return false; - } - } - - // Save this path for later - this.concavePath = p.vertices.slice(0); - for(var i=0; ithis for details. - * @method applyDamping - * @param {number} dt Current time step - */ -Body.prototype.applyDamping = function(dt){ - if(this.type === Body.DYNAMIC){ // Only for dynamic bodies - var v = this.velocity; - vec2.scale(v, v, Math.pow(1.0 - this.damping,dt)); - this.angularVelocity *= Math.pow(1.0 - this.angularDamping,dt); - } -}; - -/** - * Wake the body up. Normally you should not need this, as the body is automatically awoken at events such as collisions. - * Sets the sleepState to {{#crossLink "Body/AWAKE:property"}}Body.AWAKE{{/crossLink}} and emits the wakeUp event if the body wasn't awake before. - * @method wakeUp - */ -Body.prototype.wakeUp = function(){ - var s = this.sleepState; - this.sleepState = Body.AWAKE; - this.idleTime = 0; - if(s !== Body.AWAKE){ - this.emit(Body.wakeUpEvent); - } -}; - -/** - * Force body sleep - * @method sleep - */ -Body.prototype.sleep = function(){ - this.sleepState = Body.SLEEPING; - this.angularVelocity = 0; - this.angularForce = 0; - vec2.set(this.velocity,0,0); - vec2.set(this.force,0,0); - this.emit(Body.sleepEvent); -}; - -/** - * Called every timestep to update internal sleep timer and change sleep state if needed. - * @method sleepTick - * @param {number} time The world time in seconds - * @param {boolean} dontSleep - * @param {number} dt - */ -Body.prototype.sleepTick = function(time, dontSleep, dt){ - if(!this.allowSleep || this.type === Body.SLEEPING){ - return; - } - - this.wantsToSleep = false; - - var sleepState = this.sleepState, - speedSquared = vec2.squaredLength(this.velocity) + Math.pow(this.angularVelocity,2), - speedLimitSquared = Math.pow(this.sleepSpeedLimit,2); - - // Add to idle time - if(speedSquared >= speedLimitSquared){ - this.idleTime = 0; - this.sleepState = Body.AWAKE; - } else { - this.idleTime += dt; - this.sleepState = Body.SLEEPY; - } - if(this.idleTime > this.sleepTimeLimit){ - if(!dontSleep){ - this.sleep(); - } else { - this.wantsToSleep = true; - } - } -}; - -/** - * Check if the body is overlapping another body. Note that this method only works if the body was added to a World and if at least one step was taken. - * @method overlaps - * @param {Body} body - * @return {boolean} - */ -Body.prototype.overlaps = function(body){ - return this.world.overlapKeeper.bodiesAreOverlapping(this, body); -}; - -var integrate_fhMinv = vec2.create(); -var integrate_velodt = vec2.create(); - -/** - * Move the body forward in time given its current velocity. - * @method integrate - * @param {Number} dt - */ -Body.prototype.integrate = function(dt){ - var minv = this.invMass, - f = this.force, - pos = this.position, - velo = this.velocity; - - // Save old position - vec2.copy(this.previousPosition, this.position); - this.previousAngle = this.angle; - - // Velocity update - if(!this.fixedRotation){ - this.angularVelocity += this.angularForce * this.invInertia * dt; - } - vec2.scale(integrate_fhMinv, f, dt * minv); - vec2.multiply(integrate_fhMinv, this.massMultiplier, integrate_fhMinv); - vec2.add(velo, integrate_fhMinv, velo); - - // CCD - if(!this.integrateToTimeOfImpact(dt)){ - - // Regular position update - vec2.scale(integrate_velodt, velo, dt); - vec2.add(pos, pos, integrate_velodt); - if(!this.fixedRotation){ - this.angle += this.angularVelocity * dt; - } - } - - this.aabbNeedsUpdate = true; -}; - -var result = new RaycastResult(); -var ray = new Ray({ - mode: Ray.ALL -}); -var direction = vec2.create(); -var end = vec2.create(); -var startToEnd = vec2.create(); -var rememberPosition = vec2.create(); -Body.prototype.integrateToTimeOfImpact = function(dt){ - - if(this.ccdSpeedThreshold < 0 || vec2.squaredLength(this.velocity) < Math.pow(this.ccdSpeedThreshold, 2)){ - return false; - } - - vec2.normalize(direction, this.velocity); - - vec2.scale(end, this.velocity, dt); - vec2.add(end, end, this.position); - - vec2.sub(startToEnd, end, this.position); - var startToEndAngle = this.angularVelocity * dt; - var len = vec2.length(startToEnd); - - var timeOfImpact = 1; - - var hit; - var that = this; - result.reset(); - ray.callback = function (result) { - if(result.body === that){ - return; - } - hit = result.body; - result.getHitPoint(end, ray); - vec2.sub(startToEnd, end, that.position); - timeOfImpact = vec2.length(startToEnd) / len; - result.stop(); - }; - vec2.copy(ray.from, this.position); - vec2.copy(ray.to, end); - ray.update(); - this.world.raycast(result, ray); - - if(!hit){ - return false; - } - - var rememberAngle = this.angle; - vec2.copy(rememberPosition, this.position); - - // Got a start and end point. Approximate time of impact using binary search - var iter = 0; - var tmin = 0; - var tmid = 0; - var tmax = timeOfImpact; - while (tmax >= tmin && iter < this.ccdIterations) { - iter++; - - // calculate the midpoint - tmid = (tmax - tmin) / 2; - - // Move the body to that point - vec2.scale(integrate_velodt, startToEnd, timeOfImpact); - vec2.add(this.position, rememberPosition, integrate_velodt); - this.angle = rememberAngle + startToEndAngle * timeOfImpact; - this.updateAABB(); - - // check overlap - var overlaps = this.aabb.overlaps(hit.aabb) && this.world.narrowphase.bodiesOverlap(this, hit); - - if (overlaps) { - // change min to search upper interval - tmin = tmid; - } else { - // change max to search lower interval - tmax = tmid; - } - } - - timeOfImpact = tmid; - - vec2.copy(this.position, rememberPosition); - this.angle = rememberAngle; - - // move to TOI - vec2.scale(integrate_velodt, startToEnd, timeOfImpact); - vec2.add(this.position, this.position, integrate_velodt); - if(!this.fixedRotation){ - this.angle += startToEndAngle * timeOfImpact; - } - - return true; -}; - -/** - * Get velocity of a point in the body. - * @method getVelocityAtPoint - * @param {Array} result A vector to store the result in - * @param {Array} relativePoint A world oriented vector, indicating the position of the point to get the velocity from - * @return {Array} The result vector - */ -Body.prototype.getVelocityAtPoint = function(result, relativePoint){ - vec2.crossVZ(result, relativePoint, this.angularVelocity); - vec2.subtract(result, this.velocity, result); - return result; -}; - -/** - * @event sleepy - */ -Body.sleepyEvent = { - type: "sleepy" -}; - -/** - * @event sleep - */ -Body.sleepEvent = { - type: "sleep" -}; - -/** - * @event wakeup - */ -Body.wakeUpEvent = { - type: "wakeup" -}; - -/** - * Dynamic body. - * @property DYNAMIC - * @type {Number} - * @static - */ -Body.DYNAMIC = 1; - -/** - * Static body. - * @property STATIC - * @type {Number} - * @static - */ -Body.STATIC = 2; - -/** - * Kinematic body. - * @property KINEMATIC - * @type {Number} - * @static - */ -Body.KINEMATIC = 4; - -/** - * @property AWAKE - * @type {Number} - * @static - */ -Body.AWAKE = 0; - -/** - * @property SLEEPY - * @type {Number} - * @static - */ -Body.SLEEPY = 1; - -/** - * @property SLEEPING - * @type {Number} - * @static - */ -Body.SLEEPING = 2; - - -},{"../collision/AABB":7,"../collision/Ray":11,"../collision/RaycastResult":12,"../events/EventEmitter":26,"../math/vec2":30,"../shapes/Convex":40,"poly-decomp":5}],32:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2'); -var Spring = _dereq_('./Spring'); -var Utils = _dereq_('../utils/Utils'); - -module.exports = LinearSpring; - -/** - * A spring, connecting two bodies. - * - * The Spring explicitly adds force and angularForce to the bodies. - * - * @class LinearSpring - * @extends Spring - * @constructor - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {number} [options.restLength] A number > 0. Default is the current distance between the world anchor points. - * @param {number} [options.stiffness=100] Spring constant (see Hookes Law). A number >= 0. - * @param {number} [options.damping=1] A number >= 0. Default: 1 - * @param {Array} [options.worldAnchorA] Where to hook the spring to body A, in world coordinates. Overrides the option "localAnchorA" if given. - * @param {Array} [options.worldAnchorB] - * @param {Array} [options.localAnchorA] Where to hook the spring to body A, in local body coordinates. Defaults to the body center. - * @param {Array} [options.localAnchorB] - */ -function LinearSpring(bodyA,bodyB,options){ - options = options || {}; - - Spring.call(this, bodyA, bodyB, options); - - /** - * Anchor for bodyA in local bodyA coordinates. - * @property localAnchorA - * @type {Array} - */ - this.localAnchorA = vec2.fromValues(0,0); - - /** - * Anchor for bodyB in local bodyB coordinates. - * @property localAnchorB - * @type {Array} - */ - this.localAnchorB = vec2.fromValues(0,0); - - if(options.localAnchorA){ vec2.copy(this.localAnchorA, options.localAnchorA); } - if(options.localAnchorB){ vec2.copy(this.localAnchorB, options.localAnchorB); } - if(options.worldAnchorA){ this.setWorldAnchorA(options.worldAnchorA); } - if(options.worldAnchorB){ this.setWorldAnchorB(options.worldAnchorB); } - - var worldAnchorA = vec2.create(); - var worldAnchorB = vec2.create(); - this.getWorldAnchorA(worldAnchorA); - this.getWorldAnchorB(worldAnchorB); - var worldDistance = vec2.distance(worldAnchorA, worldAnchorB); - - /** - * Rest length of the spring. - * @property restLength - * @type {number} - */ - this.restLength = typeof(options.restLength) === "number" ? options.restLength : worldDistance; -} -LinearSpring.prototype = new Spring(); -LinearSpring.prototype.constructor = LinearSpring; - -/** - * Set the anchor point on body A, using world coordinates. - * @method setWorldAnchorA - * @param {Array} worldAnchorA - */ -LinearSpring.prototype.setWorldAnchorA = function(worldAnchorA){ - this.bodyA.toLocalFrame(this.localAnchorA, worldAnchorA); -}; - -/** - * Set the anchor point on body B, using world coordinates. - * @method setWorldAnchorB - * @param {Array} worldAnchorB - */ -LinearSpring.prototype.setWorldAnchorB = function(worldAnchorB){ - this.bodyB.toLocalFrame(this.localAnchorB, worldAnchorB); -}; - -/** - * Get the anchor point on body A, in world coordinates. - * @method getWorldAnchorA - * @param {Array} result The vector to store the result in. - */ -LinearSpring.prototype.getWorldAnchorA = function(result){ - this.bodyA.toWorldFrame(result, this.localAnchorA); -}; - -/** - * Get the anchor point on body B, in world coordinates. - * @method getWorldAnchorB - * @param {Array} result The vector to store the result in. - */ -LinearSpring.prototype.getWorldAnchorB = function(result){ - this.bodyB.toWorldFrame(result, this.localAnchorB); -}; - -var applyForce_r = vec2.create(), - applyForce_r_unit = vec2.create(), - applyForce_u = vec2.create(), - applyForce_f = vec2.create(), - applyForce_worldAnchorA = vec2.create(), - applyForce_worldAnchorB = vec2.create(), - applyForce_ri = vec2.create(), - applyForce_rj = vec2.create(), - applyForce_tmp = vec2.create(); - -/** - * Apply the spring force to the connected bodies. - * @method applyForce - */ -LinearSpring.prototype.applyForce = function(){ - var k = this.stiffness, - d = this.damping, - l = this.restLength, - bodyA = this.bodyA, - bodyB = this.bodyB, - r = applyForce_r, - r_unit = applyForce_r_unit, - u = applyForce_u, - f = applyForce_f, - tmp = applyForce_tmp; - - var worldAnchorA = applyForce_worldAnchorA, - worldAnchorB = applyForce_worldAnchorB, - ri = applyForce_ri, - rj = applyForce_rj; - - // Get world anchors - this.getWorldAnchorA(worldAnchorA); - this.getWorldAnchorB(worldAnchorB); - - // Get offset points - vec2.sub(ri, worldAnchorA, bodyA.position); - vec2.sub(rj, worldAnchorB, bodyB.position); - - // Compute distance vector between world anchor points - vec2.sub(r, worldAnchorB, worldAnchorA); - var rlen = vec2.len(r); - vec2.normalize(r_unit,r); - - //console.log(rlen) - //console.log("A",vec2.str(worldAnchorA),"B",vec2.str(worldAnchorB)) - - // Compute relative velocity of the anchor points, u - vec2.sub(u, bodyB.velocity, bodyA.velocity); - vec2.crossZV(tmp, bodyB.angularVelocity, rj); - vec2.add(u, u, tmp); - vec2.crossZV(tmp, bodyA.angularVelocity, ri); - vec2.sub(u, u, tmp); - - // F = - k * ( x - L ) - D * ( u ) - vec2.scale(f, r_unit, -k*(rlen-l) - d*vec2.dot(u,r_unit)); - - // Add forces to bodies - vec2.sub( bodyA.force, bodyA.force, f); - vec2.add( bodyB.force, bodyB.force, f); - - // Angular force - var ri_x_f = vec2.crossLength(ri, f); - var rj_x_f = vec2.crossLength(rj, f); - bodyA.angularForce -= ri_x_f; - bodyB.angularForce += rj_x_f; -}; - -},{"../math/vec2":30,"../utils/Utils":57,"./Spring":34}],33:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2'); -var Spring = _dereq_('./Spring'); - -module.exports = RotationalSpring; - -/** - * A rotational spring, connecting two bodies rotation. This spring explicitly adds angularForce (torque) to the bodies. - * - * The spring can be combined with a {{#crossLink "RevoluteConstraint"}}{{/crossLink}} to make, for example, a mouse trap. - * - * @class RotationalSpring - * @extends Spring - * @constructor - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {number} [options.restAngle] The relative angle of bodies at which the spring is at rest. If not given, it's set to the current relative angle between the bodies. - * @param {number} [options.stiffness=100] Spring constant (see Hookes Law). A number >= 0. - * @param {number} [options.damping=1] A number >= 0. - */ -function RotationalSpring(bodyA, bodyB, options){ - options = options || {}; - - Spring.call(this, bodyA, bodyB, options); - - /** - * Rest angle of the spring. - * @property restAngle - * @type {number} - */ - this.restAngle = typeof(options.restAngle) === "number" ? options.restAngle : bodyB.angle - bodyA.angle; -} -RotationalSpring.prototype = new Spring(); -RotationalSpring.prototype.constructor = RotationalSpring; - -/** - * Apply the spring force to the connected bodies. - * @method applyForce - */ -RotationalSpring.prototype.applyForce = function(){ - var k = this.stiffness, - d = this.damping, - l = this.restAngle, - bodyA = this.bodyA, - bodyB = this.bodyB, - x = bodyB.angle - bodyA.angle, - u = bodyB.angularVelocity - bodyA.angularVelocity; - - var torque = - k * (x - l) - d * u * 0; - - bodyA.angularForce -= torque; - bodyB.angularForce += torque; -}; - -},{"../math/vec2":30,"./Spring":34}],34:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2'); -var Utils = _dereq_('../utils/Utils'); - -module.exports = Spring; - -/** - * A spring, connecting two bodies. The Spring explicitly adds force and angularForce to the bodies and does therefore not put load on the constraint solver. - * - * @class Spring - * @constructor - * @param {Body} bodyA - * @param {Body} bodyB - * @param {Object} [options] - * @param {number} [options.stiffness=100] Spring constant (see Hookes Law). A number >= 0. - * @param {number} [options.damping=1] A number >= 0. Default: 1 - * @param {Array} [options.localAnchorA] Where to hook the spring to body A, in local body coordinates. Defaults to the body center. - * @param {Array} [options.localAnchorB] - * @param {Array} [options.worldAnchorA] Where to hook the spring to body A, in world coordinates. Overrides the option "localAnchorA" if given. - * @param {Array} [options.worldAnchorB] - */ -function Spring(bodyA, bodyB, options){ - options = Utils.defaults(options,{ - stiffness: 100, - damping: 1, - }); - - /** - * Stiffness of the spring. - * @property stiffness - * @type {number} - */ - this.stiffness = options.stiffness; - - /** - * Damping of the spring. - * @property damping - * @type {number} - */ - this.damping = options.damping; - - /** - * First connected body. - * @property bodyA - * @type {Body} - */ - this.bodyA = bodyA; - - /** - * Second connected body. - * @property bodyB - * @type {Body} - */ - this.bodyB = bodyB; -} - -/** - * Apply the spring force to the connected bodies. - * @method applyForce - */ -Spring.prototype.applyForce = function(){ - // To be implemented by subclasses -}; - -},{"../math/vec2":30,"../utils/Utils":57}],35:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2'); -var Utils = _dereq_('../utils/Utils'); -var Constraint = _dereq_('../constraints/Constraint'); -var FrictionEquation = _dereq_('../equations/FrictionEquation'); -var Body = _dereq_('../objects/Body'); - -module.exports = TopDownVehicle; - -/** - * @class TopDownVehicle - * @constructor - * @param {Body} chassisBody A dynamic body, already added to the world. - * @param {Object} [options] - * - * @example - * - * // Create a dynamic body for the chassis - * var chassisBody = new Body({ - * mass: 1 - * }); - * var boxShape = new Box({ width: 0.5, height: 1 }); - * chassisBody.addShape(boxShape); - * world.addBody(chassisBody); - * - * // Create the vehicle - * var vehicle = new TopDownVehicle(chassisBody); - * - * // Add one front wheel and one back wheel - we don't actually need four :) - * var frontWheel = vehicle.addWheel({ - * localPosition: [0, 0.5] // front - * }); - * frontWheel.setSideFriction(4); - * - * // Back wheel - * var backWheel = vehicle.addWheel({ - * localPosition: [0, -0.5] // back - * }); - * backWheel.setSideFriction(3); // Less side friction on back wheel makes it easier to drift - * vehicle.addToWorld(world); - * - * // Steer value zero means straight forward. Positive is left and negative right. - * frontWheel.steerValue = Math.PI / 16; - * - * // Engine force forward - * backWheel.engineForce = 10; - * backWheel.setBrakeForce(0); - */ -function TopDownVehicle(chassisBody, options){ - options = options || {}; - - /** - * @property {Body} chassisBody - */ - this.chassisBody = chassisBody; - - /** - * @property {Array} wheels - */ - this.wheels = []; - - // A dummy body to constrain the chassis to - this.groundBody = new Body({ mass: 0 }); - - this.world = null; - - var that = this; - this.preStepCallback = function(){ - that.update(); - }; -} - -/** - * @method addToWorld - * @param {World} world - */ -TopDownVehicle.prototype.addToWorld = function(world){ - this.world = world; - world.addBody(this.groundBody); - world.on('preStep', this.preStepCallback); - for (var i = 0; i < this.wheels.length; i++) { - var wheel = this.wheels[i]; - world.addConstraint(wheel); - } -}; - -/** - * @method removeFromWorld - * @param {World} world - */ -TopDownVehicle.prototype.removeFromWorld = function(){ - var world = this.world; - world.removeBody(this.groundBody); - world.off('preStep', this.preStepCallback); - for (var i = 0; i < this.wheels.length; i++) { - var wheel = this.wheels[i]; - world.removeConstraint(wheel); - } - this.world = null; -}; - -/** - * @method addWheel - * @param {object} [wheelOptions] - * @return {WheelConstraint} - */ -TopDownVehicle.prototype.addWheel = function(wheelOptions){ - var wheel = new WheelConstraint(this,wheelOptions); - this.wheels.push(wheel); - return wheel; -}; - -/** - * @method update - */ -TopDownVehicle.prototype.update = function(){ - for (var i = 0; i < this.wheels.length; i++) { - this.wheels[i].update(); - } -}; - -/** - * @class WheelConstraint - * @constructor - * @extends {Constraint} - * @param {Vehicle} vehicle - * @param {object} [options] - * @param {Array} [options.localForwardVector]The local wheel forward vector in local body space. Default is zero. - * @param {Array} [options.localPosition] The local position of the wheen in the chassis body. Default is zero - the center of the body. - * @param {Array} [options.sideFriction=5] The max friction force in the sideways direction. - */ -function WheelConstraint(vehicle, options){ - options = options || {}; - - this.vehicle = vehicle; - - this.forwardEquation = new FrictionEquation(vehicle.chassisBody, vehicle.groundBody); - - this.sideEquation = new FrictionEquation(vehicle.chassisBody, vehicle.groundBody); - - /** - * @property {number} steerValue - */ - this.steerValue = 0; - - /** - * @property {number} engineForce - */ - this.engineForce = 0; - - this.setSideFriction(options.sideFriction !== undefined ? options.sideFriction : 5); - - /** - * @property {Array} localForwardVector - */ - this.localForwardVector = vec2.fromValues(0, 1); - if(options.localForwardVector){ - vec2.copy(this.localForwardVector, options.localForwardVector); - } - - /** - * @property {Array} localPosition - */ - this.localPosition = vec2.fromValues(0, 0); - if(options.localPosition){ - vec2.copy(this.localPosition, options.localPosition); - } - - Constraint.apply(this, vehicle.chassisBody, vehicle.groundBody); - - this.equations.push( - this.forwardEquation, - this.sideEquation - ); - - this.setBrakeForce(0); -} -WheelConstraint.prototype = new Constraint(); - -/** - * @method setForwardFriction - */ -WheelConstraint.prototype.setBrakeForce = function(force){ - this.forwardEquation.setSlipForce(force); -}; - -/** - * @method setSideFriction - */ -WheelConstraint.prototype.setSideFriction = function(force){ - this.sideEquation.setSlipForce(force); -}; - -var worldVelocity = vec2.create(); -var relativePoint = vec2.create(); - -/** - * @method getSpeed - */ -WheelConstraint.prototype.getSpeed = function(){ - this.vehicle.chassisBody.vectorToWorldFrame(relativePoint, this.localForwardVector); - this.vehicle.chassisBody.getVelocityAtPoint(worldVelocity, relativePoint); - return vec2.dot(worldVelocity, relativePoint); -}; - -var tmpVec = vec2.create(); - -/** - * @method update - */ -WheelConstraint.prototype.update = function(){ - - // Directional - this.vehicle.chassisBody.vectorToWorldFrame(this.forwardEquation.t, this.localForwardVector); - vec2.rotate(this.sideEquation.t, this.localForwardVector, Math.PI / 2); - this.vehicle.chassisBody.vectorToWorldFrame(this.sideEquation.t, this.sideEquation.t); - - vec2.rotate(this.forwardEquation.t, this.forwardEquation.t, this.steerValue); - vec2.rotate(this.sideEquation.t, this.sideEquation.t, this.steerValue); - - // Attachment point - this.vehicle.chassisBody.toWorldFrame(this.forwardEquation.contactPointB, this.localPosition); - vec2.copy(this.sideEquation.contactPointB, this.forwardEquation.contactPointB); - - this.vehicle.chassisBody.vectorToWorldFrame(this.forwardEquation.contactPointA, this.localPosition); - vec2.copy(this.sideEquation.contactPointA, this.forwardEquation.contactPointA); - - // Add engine force - vec2.normalize(tmpVec, this.forwardEquation.t); - vec2.scale(tmpVec, tmpVec, this.engineForce); - - this.vehicle.chassisBody.applyForce(tmpVec, this.forwardEquation.contactPointA); -}; -},{"../constraints/Constraint":14,"../equations/FrictionEquation":23,"../math/vec2":30,"../objects/Body":31,"../utils/Utils":57}],36:[function(_dereq_,module,exports){ -// Export p2 classes -var p2 = module.exports = { - AABB : _dereq_('./collision/AABB'), - AngleLockEquation : _dereq_('./equations/AngleLockEquation'), - Body : _dereq_('./objects/Body'), - Broadphase : _dereq_('./collision/Broadphase'), - Capsule : _dereq_('./shapes/Capsule'), - Circle : _dereq_('./shapes/Circle'), - Constraint : _dereq_('./constraints/Constraint'), - ContactEquation : _dereq_('./equations/ContactEquation'), - ContactEquationPool : _dereq_('./utils/ContactEquationPool'), - ContactMaterial : _dereq_('./material/ContactMaterial'), - Convex : _dereq_('./shapes/Convex'), - DistanceConstraint : _dereq_('./constraints/DistanceConstraint'), - Equation : _dereq_('./equations/Equation'), - EventEmitter : _dereq_('./events/EventEmitter'), - FrictionEquation : _dereq_('./equations/FrictionEquation'), - FrictionEquationPool : _dereq_('./utils/FrictionEquationPool'), - GearConstraint : _dereq_('./constraints/GearConstraint'), - GSSolver : _dereq_('./solver/GSSolver'), - Heightfield : _dereq_('./shapes/Heightfield'), - Line : _dereq_('./shapes/Line'), - LockConstraint : _dereq_('./constraints/LockConstraint'), - Material : _dereq_('./material/Material'), - Narrowphase : _dereq_('./collision/Narrowphase'), - NaiveBroadphase : _dereq_('./collision/NaiveBroadphase'), - Particle : _dereq_('./shapes/Particle'), - Plane : _dereq_('./shapes/Plane'), - Pool : _dereq_('./utils/Pool'), - RevoluteConstraint : _dereq_('./constraints/RevoluteConstraint'), - PrismaticConstraint : _dereq_('./constraints/PrismaticConstraint'), - Ray : _dereq_('./collision/Ray'), - RaycastResult : _dereq_('./collision/RaycastResult'), - Box : _dereq_('./shapes/Box'), - RotationalVelocityEquation : _dereq_('./equations/RotationalVelocityEquation'), - SAPBroadphase : _dereq_('./collision/SAPBroadphase'), - Shape : _dereq_('./shapes/Shape'), - Solver : _dereq_('./solver/Solver'), - Spring : _dereq_('./objects/Spring'), - TopDownVehicle : _dereq_('./objects/TopDownVehicle'), - LinearSpring : _dereq_('./objects/LinearSpring'), - RotationalSpring : _dereq_('./objects/RotationalSpring'), - Utils : _dereq_('./utils/Utils'), - World : _dereq_('./world/World'), - vec2 : _dereq_('./math/vec2'), - version : _dereq_('../package.json').version, -}; - -Object.defineProperty(p2, 'Rectangle', { - get: function() { - console.warn('The Rectangle class has been renamed to Box.'); - return this.Box; - } -}); -},{"../package.json":6,"./collision/AABB":7,"./collision/Broadphase":8,"./collision/NaiveBroadphase":9,"./collision/Narrowphase":10,"./collision/Ray":11,"./collision/RaycastResult":12,"./collision/SAPBroadphase":13,"./constraints/Constraint":14,"./constraints/DistanceConstraint":15,"./constraints/GearConstraint":16,"./constraints/LockConstraint":17,"./constraints/PrismaticConstraint":18,"./constraints/RevoluteConstraint":19,"./equations/AngleLockEquation":20,"./equations/ContactEquation":21,"./equations/Equation":22,"./equations/FrictionEquation":23,"./equations/RotationalVelocityEquation":25,"./events/EventEmitter":26,"./material/ContactMaterial":27,"./material/Material":28,"./math/vec2":30,"./objects/Body":31,"./objects/LinearSpring":32,"./objects/RotationalSpring":33,"./objects/Spring":34,"./objects/TopDownVehicle":35,"./shapes/Box":37,"./shapes/Capsule":38,"./shapes/Circle":39,"./shapes/Convex":40,"./shapes/Heightfield":41,"./shapes/Line":42,"./shapes/Particle":43,"./shapes/Plane":44,"./shapes/Shape":45,"./solver/GSSolver":46,"./solver/Solver":47,"./utils/ContactEquationPool":48,"./utils/FrictionEquationPool":49,"./utils/Pool":55,"./utils/Utils":57,"./world/World":61}],37:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2') -, Shape = _dereq_('./Shape') -, Convex = _dereq_('./Convex'); - -module.exports = Box; - -/** - * Box shape class. - * @class Box - * @constructor - * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) - * @param {Number} [options.width=1] Total width of the box - * @param {Number} [options.height=1] Total height of the box - * @extends Convex - */ -function Box(options){ - if(typeof(arguments[0]) === 'number' && typeof(arguments[1]) === 'number'){ - options = { - width: arguments[0], - height: arguments[1] - }; - console.warn('The Rectangle has been renamed to Box and its constructor signature has changed. Please use the following format: new Box({ width: 1, height: 1, ... })'); - } - options = options || {}; - - /** - * Total width of the box - * @property width - * @type {Number} - */ - var width = this.width = options.width || 1; - - /** - * Total height of the box - * @property height - * @type {Number} - */ - var height = this.height = options.height || 1; - - var verts = [ - vec2.fromValues(-width/2, -height/2), - vec2.fromValues( width/2, -height/2), - vec2.fromValues( width/2, height/2), - vec2.fromValues(-width/2, height/2) - ]; - var axes = [ - vec2.fromValues(1, 0), - vec2.fromValues(0, 1) - ]; - - options.vertices = verts; - options.axes = axes; - options.type = Shape.BOX; - Convex.call(this, options); -} -Box.prototype = new Convex(); -Box.prototype.constructor = Box; - -/** - * Compute moment of inertia - * @method computeMomentOfInertia - * @param {Number} mass - * @return {Number} - */ -Box.prototype.computeMomentOfInertia = function(mass){ - var w = this.width, - h = this.height; - return mass * (h*h + w*w) / 12; -}; - -/** - * Update the bounding radius - * @method updateBoundingRadius - */ -Box.prototype.updateBoundingRadius = function(){ - var w = this.width, - h = this.height; - this.boundingRadius = Math.sqrt(w*w + h*h) / 2; -}; - -var corner1 = vec2.create(), - corner2 = vec2.create(), - corner3 = vec2.create(), - corner4 = vec2.create(); - -/** - * @method computeAABB - * @param {AABB} out The resulting AABB. - * @param {Array} position - * @param {Number} angle - */ -Box.prototype.computeAABB = function(out, position, angle){ - out.setFromPoints(this.vertices,position,angle,0); -}; - -Box.prototype.updateArea = function(){ - this.area = this.width * this.height; -}; - - -},{"../math/vec2":30,"./Convex":40,"./Shape":45}],38:[function(_dereq_,module,exports){ -var Shape = _dereq_('./Shape') -, vec2 = _dereq_('../math/vec2'); - -module.exports = Capsule; - -/** - * Capsule shape class. - * @class Capsule - * @constructor - * @extends Shape - * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) - * @param {Number} [options.length=1] The distance between the end points - * @param {Number} [options.radius=1] Radius of the capsule - * @example - * var capsuleShape = new Capsule({ - * length: 1, - * radius: 2 - * }); - * body.addShape(capsuleShape); - */ -function Capsule(options){ - if(typeof(arguments[0]) === 'number' && typeof(arguments[1]) === 'number'){ - options = { - length: arguments[0], - radius: arguments[1] - }; - console.warn('The Capsule constructor signature has changed. Please use the following format: new Capsule({ radius: 1, length: 1 })'); - } - options = options || {}; - - /** - * The distance between the end points. - * @property {Number} length - */ - this.length = options.length || 1; - - /** - * The radius of the capsule. - * @property {Number} radius - */ - this.radius = options.radius || 1; - - options.type = Shape.CAPSULE; - Shape.call(this, options); -} -Capsule.prototype = new Shape(); -Capsule.prototype.constructor = Capsule; - -/** - * Compute the mass moment of inertia of the Capsule. - * @method conputeMomentOfInertia - * @param {Number} mass - * @return {Number} - * @todo - */ -Capsule.prototype.computeMomentOfInertia = function(mass){ - // Approximate with rectangle - var r = this.radius, - w = this.length + r, // 2*r is too much, 0 is too little - h = r*2; - return mass * (h*h + w*w) / 12; -}; - -/** - * @method updateBoundingRadius - */ -Capsule.prototype.updateBoundingRadius = function(){ - this.boundingRadius = this.radius + this.length/2; -}; - -/** - * @method updateArea - */ -Capsule.prototype.updateArea = function(){ - this.area = Math.PI * this.radius * this.radius + this.radius * 2 * this.length; -}; - -var r = vec2.create(); - -/** - * @method computeAABB - * @param {AABB} out The resulting AABB. - * @param {Array} position - * @param {Number} angle - */ -Capsule.prototype.computeAABB = function(out, position, angle){ - var radius = this.radius; - - // Compute center position of one of the the circles, world oriented, but with local offset - vec2.set(r,this.length / 2,0); - if(angle !== 0){ - vec2.rotate(r,r,angle); - } - - // Get bounds - vec2.set(out.upperBound, Math.max(r[0]+radius, -r[0]+radius), - Math.max(r[1]+radius, -r[1]+radius)); - vec2.set(out.lowerBound, Math.min(r[0]-radius, -r[0]-radius), - Math.min(r[1]-radius, -r[1]-radius)); - - // Add offset - vec2.add(out.lowerBound, out.lowerBound, position); - vec2.add(out.upperBound, out.upperBound, position); -}; - -var intersectCapsule_hitPointWorld = vec2.create(); -var intersectCapsule_normal = vec2.create(); -var intersectCapsule_l0 = vec2.create(); -var intersectCapsule_l1 = vec2.create(); -var intersectCapsule_unit_y = vec2.fromValues(0,1); - -/** - * @method raycast - * @param {RaycastResult} result - * @param {Ray} ray - * @param {array} position - * @param {number} angle - */ -Capsule.prototype.raycast = function(result, ray, position, angle){ - var from = ray.from; - var to = ray.to; - var direction = ray.direction; - - var hitPointWorld = intersectCapsule_hitPointWorld; - var normal = intersectCapsule_normal; - var l0 = intersectCapsule_l0; - var l1 = intersectCapsule_l1; - - // The sides - var halfLen = this.length / 2; - for(var i=0; i<2; i++){ - - // get start and end of the line - var y = this.radius * (i*2-1); - vec2.set(l0, -halfLen, y); - vec2.set(l1, halfLen, y); - vec2.toGlobalFrame(l0, l0, position, angle); - vec2.toGlobalFrame(l1, l1, position, angle); - - var delta = vec2.getLineSegmentsIntersectionFraction(from, to, l0, l1); - if(delta >= 0){ - vec2.rotate(normal, intersectCapsule_unit_y, angle); - vec2.scale(normal, normal, (i*2-1)); - ray.reportIntersection(result, delta, normal, -1); - if(result.shouldStop(ray)){ - return; - } - } - } - - // Circles - var diagonalLengthSquared = Math.pow(this.radius, 2) + Math.pow(halfLen, 2); - for(var i=0; i<2; i++){ - vec2.set(l0, halfLen * (i*2-1), 0); - vec2.toGlobalFrame(l0, l0, position, angle); - - var a = Math.pow(to[0] - from[0], 2) + Math.pow(to[1] - from[1], 2); - var b = 2 * ((to[0] - from[0]) * (from[0] - l0[0]) + (to[1] - from[1]) * (from[1] - l0[1])); - var c = Math.pow(from[0] - l0[0], 2) + Math.pow(from[1] - l0[1], 2) - Math.pow(this.radius, 2); - var delta = Math.pow(b, 2) - 4 * a * c; - - if(delta < 0){ - // No intersection - continue; - - } else if(delta === 0){ - // single intersection point - vec2.lerp(hitPointWorld, from, to, delta); - - if(vec2.squaredDistance(hitPointWorld, position) > diagonalLengthSquared){ - vec2.sub(normal, hitPointWorld, l0); - vec2.normalize(normal,normal); - ray.reportIntersection(result, delta, normal, -1); - if(result.shouldStop(ray)){ - return; - } - } - - } else { - var sqrtDelta = Math.sqrt(delta); - var inv2a = 1 / (2 * a); - var d1 = (- b - sqrtDelta) * inv2a; - var d2 = (- b + sqrtDelta) * inv2a; - - if(d1 >= 0 && d1 <= 1){ - vec2.lerp(hitPointWorld, from, to, d1); - if(vec2.squaredDistance(hitPointWorld, position) > diagonalLengthSquared){ - vec2.sub(normal, hitPointWorld, l0); - vec2.normalize(normal,normal); - ray.reportIntersection(result, d1, normal, -1); - if(result.shouldStop(ray)){ - return; - } - } - } - - if(d2 >= 0 && d2 <= 1){ - vec2.lerp(hitPointWorld, from, to, d2); - if(vec2.squaredDistance(hitPointWorld, position) > diagonalLengthSquared){ - vec2.sub(normal, hitPointWorld, l0); - vec2.normalize(normal,normal); - ray.reportIntersection(result, d2, normal, -1); - if(result.shouldStop(ray)){ - return; - } - } - } - } - } -}; -},{"../math/vec2":30,"./Shape":45}],39:[function(_dereq_,module,exports){ -var Shape = _dereq_('./Shape') -, vec2 = _dereq_('../math/vec2'); - -module.exports = Circle; - -/** - * Circle shape class. - * @class Circle - * @extends Shape - * @constructor - * @param {options} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) - * @param {number} [options.radius=1] The radius of this circle - * - * @example - * var circleShape = new Circle({ radius: 1 }); - * body.addShape(circleShape); - */ -function Circle(options){ - if(typeof(arguments[0]) === 'number'){ - options = { - radius: arguments[0] - }; - console.warn('The Circle constructor signature has changed. Please use the following format: new Circle({ radius: 1 })'); - } - options = options || {}; - - /** - * The radius of the circle. - * @property radius - * @type {number} - */ - this.radius = options.radius || 1; - - options.type = Shape.CIRCLE; - Shape.call(this, options); -} -Circle.prototype = new Shape(); -Circle.prototype.constructor = Circle; - -/** - * @method computeMomentOfInertia - * @param {Number} mass - * @return {Number} - */ -Circle.prototype.computeMomentOfInertia = function(mass){ - var r = this.radius; - return mass * r * r / 2; -}; - -/** - * @method updateBoundingRadius - * @return {Number} - */ -Circle.prototype.updateBoundingRadius = function(){ - this.boundingRadius = this.radius; -}; - -/** - * @method updateArea - * @return {Number} - */ -Circle.prototype.updateArea = function(){ - this.area = Math.PI * this.radius * this.radius; -}; - -/** - * @method computeAABB - * @param {AABB} out The resulting AABB. - * @param {Array} position - * @param {Number} angle - */ -Circle.prototype.computeAABB = function(out, position, angle){ - var r = this.radius; - vec2.set(out.upperBound, r, r); - vec2.set(out.lowerBound, -r, -r); - if(position){ - vec2.add(out.lowerBound, out.lowerBound, position); - vec2.add(out.upperBound, out.upperBound, position); - } -}; - -var Ray_intersectSphere_intersectionPoint = vec2.create(); -var Ray_intersectSphere_normal = vec2.create(); - -/** - * @method raycast - * @param {RaycastResult} result - * @param {Ray} ray - * @param {array} position - * @param {number} angle - */ -Circle.prototype.raycast = function(result, ray, position, angle){ - var from = ray.from, - to = ray.to, - r = this.radius; - - var a = Math.pow(to[0] - from[0], 2) + Math.pow(to[1] - from[1], 2); - var b = 2 * ((to[0] - from[0]) * (from[0] - position[0]) + (to[1] - from[1]) * (from[1] - position[1])); - var c = Math.pow(from[0] - position[0], 2) + Math.pow(from[1] - position[1], 2) - Math.pow(r, 2); - var delta = Math.pow(b, 2) - 4 * a * c; - - var intersectionPoint = Ray_intersectSphere_intersectionPoint; - var normal = Ray_intersectSphere_normal; - - if(delta < 0){ - // No intersection - return; - - } else if(delta === 0){ - // single intersection point - vec2.lerp(intersectionPoint, from, to, delta); - - vec2.sub(normal, intersectionPoint, position); - vec2.normalize(normal,normal); - - ray.reportIntersection(result, delta, normal, -1); - - } else { - var sqrtDelta = Math.sqrt(delta); - var inv2a = 1 / (2 * a); - var d1 = (- b - sqrtDelta) * inv2a; - var d2 = (- b + sqrtDelta) * inv2a; - - if(d1 >= 0 && d1 <= 1){ - vec2.lerp(intersectionPoint, from, to, d1); - - vec2.sub(normal, intersectionPoint, position); - vec2.normalize(normal,normal); - - ray.reportIntersection(result, d1, normal, -1); - - if(result.shouldStop(ray)){ - return; - } - } - - if(d2 >= 0 && d2 <= 1){ - vec2.lerp(intersectionPoint, from, to, d2); - - vec2.sub(normal, intersectionPoint, position); - vec2.normalize(normal,normal); - - ray.reportIntersection(result, d2, normal, -1); - } - } -}; -},{"../math/vec2":30,"./Shape":45}],40:[function(_dereq_,module,exports){ -var Shape = _dereq_('./Shape') -, vec2 = _dereq_('../math/vec2') -, polyk = _dereq_('../math/polyk') -, decomp = _dereq_('poly-decomp'); - -module.exports = Convex; - -/** - * Convex shape class. - * @class Convex - * @constructor - * @extends Shape - * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) - * @param {Array} [options.vertices] An array of vertices that span this shape. Vertices are given in counter-clockwise (CCW) direction. - * @param {Array} [options.axes] An array of unit length vectors, representing the symmetry axes in the convex. - * @example - * // Create a box - * var vertices = [[-1,-1], [1,-1], [1,1], [-1,1]]; - * var convexShape = new Convex({ vertices: vertices }); - * body.addShape(convexShape); - */ -function Convex(options){ - if(Array.isArray(arguments[0])){ - options = { - vertices: arguments[0], - axes: arguments[1] - }; - console.warn('The Convex constructor signature has changed. Please use the following format: new Convex({ vertices: [...], ... })'); - } - options = options || {}; - - /** - * Vertices defined in the local frame. - * @property vertices - * @type {Array} - */ - this.vertices = []; - - // Copy the verts - var vertices = options.vertices !== undefined ? options.vertices : []; - for(var i=0; i < vertices.length; i++){ - var v = vec2.create(); - vec2.copy(v, vertices[i]); - this.vertices.push(v); - } - - /** - * Axes defined in the local frame. - * @property axes - * @type {Array} - */ - this.axes = []; - - if(options.axes){ - - // Copy the axes - for(var i=0; i < options.axes.length; i++){ - var axis = vec2.create(); - vec2.copy(axis, options.axes[i]); - this.axes.push(axis); - } - - } else { - - // Construct axes from the vertex data - for(var i = 0; i < this.vertices.length; i++){ - // Get the world edge - var worldPoint0 = this.vertices[i]; - var worldPoint1 = this.vertices[(i+1) % this.vertices.length]; - - var normal = vec2.create(); - vec2.sub(normal, worldPoint1, worldPoint0); - - // Get normal - just rotate 90 degrees since vertices are given in CCW - vec2.rotate90cw(normal, normal); - vec2.normalize(normal, normal); - - this.axes.push(normal); - } - - } - - /** - * The center of mass of the Convex - * @property centerOfMass - * @type {Array} - */ - this.centerOfMass = vec2.fromValues(0,0); - - /** - * Triangulated version of this convex. The structure is Array of 3-Arrays, and each subarray contains 3 integers, referencing the vertices. - * @property triangles - * @type {Array} - */ - this.triangles = []; - - if(this.vertices.length){ - this.updateTriangles(); - this.updateCenterOfMass(); - } - - /** - * The bounding radius of the convex - * @property boundingRadius - * @type {Number} - */ - this.boundingRadius = 0; - - options.type = Shape.CONVEX; - Shape.call(this, options); - - this.updateBoundingRadius(); - this.updateArea(); - if(this.area < 0){ - throw new Error("Convex vertices must be given in conter-clockwise winding."); - } -} -Convex.prototype = new Shape(); -Convex.prototype.constructor = Convex; - -var tmpVec1 = vec2.create(); -var tmpVec2 = vec2.create(); - -/** - * Project a Convex onto a world-oriented axis - * @method projectOntoAxis - * @static - * @param {Array} offset - * @param {Array} localAxis - * @param {Array} result - */ -Convex.prototype.projectOntoLocalAxis = function(localAxis, result){ - var max=null, - min=null, - v, - value, - localAxis = tmpVec1; - - // Get projected position of all vertices - for(var i=0; i max){ - max = value; - } - if(min === null || value < min){ - min = value; - } - } - - if(min > max){ - var t = min; - min = max; - max = t; - } - - vec2.set(result, min, max); -}; - -Convex.prototype.projectOntoWorldAxis = function(localAxis, shapeOffset, shapeAngle, result){ - var worldAxis = tmpVec2; - - this.projectOntoLocalAxis(localAxis, result); - - // Project the position of the body onto the axis - need to add this to the result - if(shapeAngle !== 0){ - vec2.rotate(worldAxis, localAxis, shapeAngle); - } else { - worldAxis = localAxis; - } - var offset = vec2.dot(shapeOffset, worldAxis); - - vec2.set(result, result[0] + offset, result[1] + offset); -}; - - -/** - * Update the .triangles property - * @method updateTriangles - */ -Convex.prototype.updateTriangles = function(){ - - this.triangles.length = 0; - - // Rewrite on polyk notation, array of numbers - var polykVerts = []; - for(var i=0; i r2){ - r2 = l2; - } - } - - this.boundingRadius = Math.sqrt(r2); -}; - -/** - * Get the area of the triangle spanned by the three points a, b, c. The area is positive if the points are given in counter-clockwise order, otherwise negative. - * @static - * @method triangleArea - * @param {Array} a - * @param {Array} b - * @param {Array} c - * @return {Number} - */ -Convex.triangleArea = function(a,b,c){ - return (((b[0] - a[0])*(c[1] - a[1]))-((c[0] - a[0])*(b[1] - a[1]))) * 0.5; -}; - -/** - * Update the .area - * @method updateArea - */ -Convex.prototype.updateArea = function(){ - this.updateTriangles(); - this.area = 0; - - var triangles = this.triangles, - verts = this.vertices; - for(var i=0; i!==triangles.length; i++){ - var t = triangles[i], - a = verts[t[0]], - b = verts[t[1]], - c = verts[t[2]]; - - // Get mass for the triangle (density=1 in this case) - var m = Convex.triangleArea(a,b,c); - this.area += m; - } -}; - -/** - * @method computeAABB - * @param {AABB} out - * @param {Array} position - * @param {Number} angle - */ -Convex.prototype.computeAABB = function(out, position, angle){ - out.setFromPoints(this.vertices, position, angle, 0); -}; - -var intersectConvex_rayStart = vec2.create(); -var intersectConvex_rayEnd = vec2.create(); -var intersectConvex_normal = vec2.create(); - -/** - * @method raycast - * @param {RaycastResult} result - * @param {Ray} ray - * @param {array} position - * @param {number} angle - */ -Convex.prototype.raycast = function(result, ray, position, angle){ - var rayStart = intersectConvex_rayStart; - var rayEnd = intersectConvex_rayEnd; - var normal = intersectConvex_normal; - var vertices = this.vertices; - - // Transform to local shape space - vec2.toLocalFrame(rayStart, ray.from, position, angle); - vec2.toLocalFrame(rayEnd, ray.to, position, angle); - - var n = vertices.length; - - for (var i = 0; i < n && !result.shouldStop(ray); i++) { - var q1 = vertices[i]; - var q2 = vertices[(i+1) % n]; - var delta = vec2.getLineSegmentsIntersectionFraction(rayStart, rayEnd, q1, q2); - - if(delta >= 0){ - vec2.sub(normal, q2, q1); - vec2.rotate(normal, normal, -Math.PI / 2 + angle); - vec2.normalize(normal, normal); - ray.reportIntersection(result, delta, normal, i); - } - } -}; - -},{"../math/polyk":29,"../math/vec2":30,"./Shape":45,"poly-decomp":5}],41:[function(_dereq_,module,exports){ -var Shape = _dereq_('./Shape') -, vec2 = _dereq_('../math/vec2') -, Utils = _dereq_('../utils/Utils'); - -module.exports = Heightfield; - -/** - * Heightfield shape class. Height data is given as an array. These data points are spread out evenly with a distance "elementWidth". - * @class Heightfield - * @extends Shape - * @constructor - * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) - * @param {array} [options.heights] An array of Y values that will be used to construct the terrain. - * @param {Number} [options.minValue] Minimum value of the data points in the data array. Will be computed automatically if not given. - * @param {Number} [options.maxValue] Maximum value. - * @param {Number} [options.elementWidth=0.1] World spacing between the data points in X direction. - * - * @example - * // Generate some height data (y-values). - * var heights = []; - * for(var i = 0; i < 1000; i++){ - * var y = 0.5 * Math.cos(0.2 * i); - * heights.push(y); - * } - * - * // Create the heightfield shape - * var heightfieldShape = new Heightfield({ - * heights: heights, - * elementWidth: 1 // Distance between the data points in X direction - * }); - * var heightfieldBody = new Body(); - * heightfieldBody.addShape(heightfieldShape); - * world.addBody(heightfieldBody); - * - * @todo Should use a scale property with X and Y direction instead of just elementWidth - */ -function Heightfield(options){ - if(Array.isArray(arguments[0])){ - options = { - heights: arguments[0] - }; - - if(typeof(arguments[1]) === 'object'){ - for(var key in arguments[1]){ - options[key] = arguments[1][key]; - } - } - - console.warn('The Heightfield constructor signature has changed. Please use the following format: new Heightfield({ heights: [...], ... })'); - } - options = options || {}; - - /** - * An array of numbers, or height values, that are spread out along the x axis. - * @property {array} heights - */ - this.heights = options.heights ? options.heights.slice(0) : []; - - /** - * Max value of the heights - * @property {number} maxValue - */ - this.maxValue = options.maxValue || null; - - /** - * Max value of the heights - * @property {number} minValue - */ - this.minValue = options.minValue || null; - - /** - * The width of each element - * @property {number} elementWidth - */ - this.elementWidth = options.elementWidth || 0.1; - - if(options.maxValue === undefined || options.minValue === undefined){ - this.updateMaxMinValues(); - } - - options.type = Shape.HEIGHTFIELD; - Shape.call(this, options); -} -Heightfield.prototype = new Shape(); -Heightfield.prototype.constructor = Heightfield; - -/** - * Update the .minValue and the .maxValue - * @method updateMaxMinValues - */ -Heightfield.prototype.updateMaxMinValues = function(){ - var data = this.heights; - var maxValue = data[0]; - var minValue = data[0]; - for(var i=0; i !== data.length; i++){ - var v = data[i]; - if(v > maxValue){ - maxValue = v; - } - if(v < minValue){ - minValue = v; - } - } - this.maxValue = maxValue; - this.minValue = minValue; -}; - -/** - * @method computeMomentOfInertia - * @param {Number} mass - * @return {Number} - */ -Heightfield.prototype.computeMomentOfInertia = function(mass){ - return Number.MAX_VALUE; -}; - -Heightfield.prototype.updateBoundingRadius = function(){ - this.boundingRadius = Number.MAX_VALUE; -}; - -Heightfield.prototype.updateArea = function(){ - var data = this.heights, - area = 0; - for(var i=0; i= 0 && s <= 1 && t >= 0 && t <= 1) { // Collision detected - var intX = p0[0] + (t * s1_x); - var intY = p0[1] + (t * s1_y); - out[0] = intX; - out[1] = intY; - return t; - } - return -1; // No collision -} - -/** - * @method raycast - * @param {RayResult} result - * @param {Ray} ray - * @param {array} position - * @param {number} angle - */ -Heightfield.prototype.raycast = function(result, ray, position, angle){ - var from = ray.from; - var to = ray.to; - var direction = ray.direction; - - var hitPointWorld = intersectHeightfield_hitPointWorld; - var worldNormal = intersectHeightfield_worldNormal; - var l0 = intersectHeightfield_l0; - var l1 = intersectHeightfield_l1; - var localFrom = intersectHeightfield_localFrom; - var localTo = intersectHeightfield_localTo; - - // get local ray start and end - vec2.toLocalFrame(localFrom, from, position, angle); - vec2.toLocalFrame(localTo, to, position, angle); - - // Get the segment range - var i0 = this.getClampedSegmentIndex(localFrom); - var i1 = this.getClampedSegmentIndex(localTo); - if(i0 > i1){ - var tmp = i0; - i0 = i1; - i1 = tmp; - } - - // The segments - for(var i=0; i= 0){ - vec2.sub(worldNormal, l1, l0); - vec2.rotate(worldNormal, worldNormal, angle + Math.PI / 2); - vec2.normalize(worldNormal, worldNormal); - ray.reportIntersection(result, t, worldNormal, -1); - if(result.shouldStop(ray)){ - return; - } - } - } -}; -},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],42:[function(_dereq_,module,exports){ -var Shape = _dereq_('./Shape') -, vec2 = _dereq_('../math/vec2'); - -module.exports = Line; - -/** - * Line shape class. The line shape is along the x direction, and stretches from [-length/2, 0] to [length/2,0]. - * @class Line - * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) - * @param {Number} [options.length=1] The total length of the line - * @extends Shape - * @constructor - */ -function Line(options){ - if(typeof(arguments[0]) === 'number'){ - options = { - length: arguments[0] - }; - console.warn('The Line constructor signature has changed. Please use the following format: new Line({ length: 1, ... })'); - } - options = options || {}; - - /** - * Length of this line - * @property {Number} length - * @default 1 - */ - this.length = options.length || 1; - - options.type = Shape.LINE; - Shape.call(this, options); -} -Line.prototype = new Shape(); -Line.prototype.constructor = Line; - -Line.prototype.computeMomentOfInertia = function(mass){ - return mass * Math.pow(this.length,2) / 12; -}; - -Line.prototype.updateBoundingRadius = function(){ - this.boundingRadius = this.length/2; -}; - -var points = [vec2.create(),vec2.create()]; - -/** - * @method computeAABB - * @param {AABB} out The resulting AABB. - * @param {Array} position - * @param {Number} angle - */ -Line.prototype.computeAABB = function(out, position, angle){ - var l2 = this.length / 2; - vec2.set(points[0], -l2, 0); - vec2.set(points[1], l2, 0); - out.setFromPoints(points,position,angle,0); -}; - -var raycast_hitPoint = vec2.create(); -var raycast_normal = vec2.create(); -var raycast_l0 = vec2.create(); -var raycast_l1 = vec2.create(); -var raycast_unit_y = vec2.fromValues(0,1); - -/** - * @method raycast - * @param {RaycastResult} result - * @param {Ray} ray - * @param {number} angle - * @param {array} position - */ -Line.prototype.raycast = function(result, ray, position, angle){ - var from = ray.from; - var to = ray.to; - - var l0 = raycast_l0; - var l1 = raycast_l1; - - // get start and end of the line - var halfLen = this.length / 2; - vec2.set(l0, -halfLen, 0); - vec2.set(l1, halfLen, 0); - vec2.toGlobalFrame(l0, l0, position, angle); - vec2.toGlobalFrame(l1, l1, position, angle); - - var fraction = vec2.getLineSegmentsIntersectionFraction(l0, l1, from, to); - if(fraction >= 0){ - var normal = raycast_normal; - vec2.rotate(normal, raycast_unit_y, angle); // todo: this should depend on which side the ray comes from - ray.reportIntersection(result, fraction, normal, -1); - } -}; -},{"../math/vec2":30,"./Shape":45}],43:[function(_dereq_,module,exports){ -var Shape = _dereq_('./Shape') -, vec2 = _dereq_('../math/vec2'); - -module.exports = Particle; - -/** - * Particle shape class. - * @class Particle - * @constructor - * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) - * @extends Shape - */ -function Particle(options){ - options = options || {}; - options.type = Shape.PARTICLE; - Shape.call(this, options); -} -Particle.prototype = new Shape(); -Particle.prototype.constructor = Particle; - -Particle.prototype.computeMomentOfInertia = function(mass){ - return 0; // Can't rotate a particle -}; - -Particle.prototype.updateBoundingRadius = function(){ - this.boundingRadius = 0; -}; - -/** - * @method computeAABB - * @param {AABB} out - * @param {Array} position - * @param {Number} angle - */ -Particle.prototype.computeAABB = function(out, position, angle){ - vec2.copy(out.lowerBound, position); - vec2.copy(out.upperBound, position); -}; - -},{"../math/vec2":30,"./Shape":45}],44:[function(_dereq_,module,exports){ -var Shape = _dereq_('./Shape') -, vec2 = _dereq_('../math/vec2') -, Utils = _dereq_('../utils/Utils'); - -module.exports = Plane; - -/** - * Plane shape class. The plane is facing in the Y direction. - * @class Plane - * @extends Shape - * @constructor - * @param {object} [options] (Note that this options object will be passed on to the {{#crossLink "Shape"}}{{/crossLink}} constructor.) - */ -function Plane(options){ - options = options || {}; - options.type = Shape.PLANE; - Shape.call(this, options); -} -Plane.prototype = new Shape(); -Plane.prototype.constructor = Plane; - -/** - * Compute moment of inertia - * @method computeMomentOfInertia - */ -Plane.prototype.computeMomentOfInertia = function(mass){ - return 0; // Plane is infinite. The inertia should therefore be infinty but by convention we set 0 here -}; - -/** - * Update the bounding radius - * @method updateBoundingRadius - */ -Plane.prototype.updateBoundingRadius = function(){ - this.boundingRadius = Number.MAX_VALUE; -}; - -/** - * @method computeAABB - * @param {AABB} out - * @param {Array} position - * @param {Number} angle - */ -Plane.prototype.computeAABB = function(out, position, angle){ - var a = angle % (2 * Math.PI); - var set = vec2.set; - var max = Number.MAX_VALUE; - var lowerBound = out.lowerBound; - var upperBound = out.upperBound; - - if(a === 0){ - // y goes from -inf to 0 - set(lowerBound, -max, -max); - set(upperBound, max, 0); - - } else if(a === Math.PI / 2){ - - // x goes from 0 to inf - set(lowerBound, 0, -max); - set(upperBound, max, max); - - } else if(a === Math.PI){ - - // y goes from 0 to inf - set(lowerBound, -max, 0); - set(upperBound, max, max); - - } else if(a === 3*Math.PI/2){ - - // x goes from -inf to 0 - set(lowerBound, -max, -max); - set(upperBound, 0, max); - - } else { - - // Set max bounds - set(lowerBound, -max, -max); - set(upperBound, max, max); - } - - vec2.add(lowerBound, lowerBound, position); - vec2.add(upperBound, upperBound, position); -}; - -Plane.prototype.updateArea = function(){ - this.area = Number.MAX_VALUE; -}; - -var intersectPlane_planePointToFrom = vec2.create(); -var intersectPlane_dir_scaled_with_t = vec2.create(); -var intersectPlane_hitPoint = vec2.create(); -var intersectPlane_normal = vec2.create(); -var intersectPlane_len = vec2.create(); - -/** - * @method raycast - * @param {RayResult} result - * @param {Ray} ray - * @param {array} position - * @param {number} angle - */ -Plane.prototype.raycast = function(result, ray, position, angle){ - var from = ray.from; - var to = ray.to; - var direction = ray.direction; - var planePointToFrom = intersectPlane_planePointToFrom; - var dir_scaled_with_t = intersectPlane_dir_scaled_with_t; - var hitPoint = intersectPlane_hitPoint; - var normal = intersectPlane_normal; - var len = intersectPlane_len; - - // Get plane normal - vec2.set(normal, 0, 1); - vec2.rotate(normal, normal, angle); - - vec2.sub(len, from, position); - var planeToFrom = vec2.dot(len, normal); - vec2.sub(len, to, position); - var planeToTo = vec2.dot(len, normal); - - if(planeToFrom * planeToTo > 0){ - // "from" and "to" are on the same side of the plane... bail out - return; - } - - if(vec2.squaredDistance(from, to) < planeToFrom * planeToFrom){ - return; - } - - var n_dot_dir = vec2.dot(normal, direction); - - vec2.sub(planePointToFrom, from, position); - var t = -vec2.dot(normal, planePointToFrom) / n_dot_dir / ray.length; - - ray.reportIntersection(result, t, normal, -1); -}; -},{"../math/vec2":30,"../utils/Utils":57,"./Shape":45}],45:[function(_dereq_,module,exports){ -module.exports = Shape; - -var vec2 = _dereq_('../math/vec2'); - -/** - * Base class for shapes. - * @class Shape - * @constructor - * @param {object} [options] - * @param {array} [options.position] - * @param {number} [options.angle=0] - * @param {number} [options.collisionGroup=1] - * @param {number} [options.collisionMask=1] - * @param {boolean} [options.sensor=false] - * @param {boolean} [options.collisionResponse=true] - * @param {object} [options.type=0] - */ -function Shape(options){ - options = options || {}; - - /** - * The body this shape is attached to. A shape can only be attached to a single body. - * @property {Body} body - */ - this.body = null; - - /** - * Body-local position of the shape. - * @property {Array} position - */ - this.position = vec2.fromValues(0,0); - if(options.position){ - vec2.copy(this.position, options.position); - } - - /** - * Body-local angle of the shape. - * @property {number} angle - */ - this.angle = options.angle || 0; - - /** - * The type of the shape. One of: - * - * * {{#crossLink "Shape/CIRCLE:property"}}Shape.CIRCLE{{/crossLink}} - * * {{#crossLink "Shape/PARTICLE:property"}}Shape.PARTICLE{{/crossLink}} - * * {{#crossLink "Shape/PLANE:property"}}Shape.PLANE{{/crossLink}} - * * {{#crossLink "Shape/CONVEX:property"}}Shape.CONVEX{{/crossLink}} - * * {{#crossLink "Shape/LINE:property"}}Shape.LINE{{/crossLink}} - * * {{#crossLink "Shape/BOX:property"}}Shape.BOX{{/crossLink}} - * * {{#crossLink "Shape/CAPSULE:property"}}Shape.CAPSULE{{/crossLink}} - * * {{#crossLink "Shape/HEIGHTFIELD:property"}}Shape.HEIGHTFIELD{{/crossLink}} - * - * @property {number} type - */ - this.type = options.type || 0; - - /** - * Shape object identifier. - * @type {Number} - * @property id - */ - this.id = Shape.idCounter++; - - /** - * Bounding circle radius of this shape - * @property boundingRadius - * @type {Number} - */ - this.boundingRadius = 0; - - /** - * Collision group that this shape belongs to (bit mask). See this tutorial. - * @property collisionGroup - * @type {Number} - * @example - * // Setup bits for each available group - * var PLAYER = Math.pow(2,0), - * ENEMY = Math.pow(2,1), - * GROUND = Math.pow(2,2) - * - * // Put shapes into their groups - * player1Shape.collisionGroup = PLAYER; - * player2Shape.collisionGroup = PLAYER; - * enemyShape .collisionGroup = ENEMY; - * groundShape .collisionGroup = GROUND; - * - * // Assign groups that each shape collide with. - * // Note that the players can collide with ground and enemies, but not with other players. - * player1Shape.collisionMask = ENEMY | GROUND; - * player2Shape.collisionMask = ENEMY | GROUND; - * enemyShape .collisionMask = PLAYER | GROUND; - * groundShape .collisionMask = PLAYER | ENEMY; - * - * @example - * // How collision check is done - * if(shapeA.collisionGroup & shapeB.collisionMask)!=0 && (shapeB.collisionGroup & shapeA.collisionMask)!=0){ - * // The shapes will collide - * } - */ - this.collisionGroup = options.collisionGroup !== undefined ? options.collisionGroup : 1; - - /** - * Whether to produce contact forces when in contact with other bodies. Note that contacts will be generated, but they will be disabled. That means that this shape will move through other body shapes, but it will still trigger contact events, etc. - * @property {Boolean} collisionResponse - */ - this.collisionResponse = options.collisionResponse !== undefined ? options.collisionResponse : true; - - /** - * Collision mask of this shape. See .collisionGroup. - * @property collisionMask - * @type {Number} - */ - this.collisionMask = options.collisionMask !== undefined ? options.collisionMask : 1; - - /** - * Material to use in collisions for this Shape. If this is set to null, the world will use default material properties instead. - * @property material - * @type {Material} - */ - this.material = options.material || null; - - /** - * Area of this shape. - * @property area - * @type {Number} - */ - this.area = 0; - - /** - * Set to true if you want this shape to be a sensor. A sensor does not generate contacts, but it still reports contact events. This is good if you want to know if a shape is overlapping another shape, without them generating contacts. - * @property {Boolean} sensor - */ - this.sensor = options.sensor !== undefined ? options.sensor : false; - - if(this.type){ - this.updateBoundingRadius(); - } - - this.updateArea(); -} - -Shape.idCounter = 0; - -/** - * @static - * @property {Number} CIRCLE - */ -Shape.CIRCLE = 1; - -/** - * @static - * @property {Number} PARTICLE - */ -Shape.PARTICLE = 2; - -/** - * @static - * @property {Number} PLANE - */ -Shape.PLANE = 4; - -/** - * @static - * @property {Number} CONVEX - */ -Shape.CONVEX = 8; - -/** - * @static - * @property {Number} LINE - */ -Shape.LINE = 16; - -/** - * @static - * @property {Number} BOX - */ -Shape.BOX = 32; - -Object.defineProperty(Shape, 'RECTANGLE', { - get: function() { - console.warn('Shape.RECTANGLE is deprecated, use Shape.BOX instead.'); - return Shape.BOX; - } -}); - -/** - * @static - * @property {Number} CAPSULE - */ -Shape.CAPSULE = 64; - -/** - * @static - * @property {Number} HEIGHTFIELD - */ -Shape.HEIGHTFIELD = 128; - -/** - * Should return the moment of inertia around the Z axis of the body given the total mass. See Wikipedia's list of moments of inertia. - * @method computeMomentOfInertia - * @param {Number} mass - * @return {Number} If the inertia is infinity or if the object simply isn't possible to rotate, return 0. - */ -Shape.prototype.computeMomentOfInertia = function(mass){}; - -/** - * Returns the bounding circle radius of this shape. - * @method updateBoundingRadius - * @return {Number} - */ -Shape.prototype.updateBoundingRadius = function(){}; - -/** - * Update the .area property of the shape. - * @method updateArea - */ -Shape.prototype.updateArea = function(){ - // To be implemented in all subclasses -}; - -/** - * Compute the world axis-aligned bounding box (AABB) of this shape. - * @method computeAABB - * @param {AABB} out The resulting AABB. - * @param {Array} position World position of the shape. - * @param {Number} angle World angle of the shape. - */ -Shape.prototype.computeAABB = function(out, position, angle){ - // To be implemented in each subclass -}; - -/** - * Perform raycasting on this shape. - * @method raycast - * @param {RayResult} result Where to store the resulting data. - * @param {Ray} ray The Ray that you want to use for raycasting. - * @param {array} position World position of the shape (the .position property will be ignored). - * @param {number} angle World angle of the shape (the .angle property will be ignored). - */ -Shape.prototype.raycast = function(result, ray, position, angle){ - // To be implemented in each subclass -}; -},{"../math/vec2":30}],46:[function(_dereq_,module,exports){ -var vec2 = _dereq_('../math/vec2') -, Solver = _dereq_('./Solver') -, Utils = _dereq_('../utils/Utils') -, FrictionEquation = _dereq_('../equations/FrictionEquation'); - -module.exports = GSSolver; - -/** - * Iterative Gauss-Seidel constraint equation solver. - * - * @class GSSolver - * @constructor - * @extends Solver - * @param {Object} [options] - * @param {Number} [options.iterations=10] - * @param {Number} [options.tolerance=0] - */ -function GSSolver(options){ - Solver.call(this,options,Solver.GS); - options = options || {}; - - /** - * The max number of iterations to do when solving. More gives better results, but is more expensive. - * @property iterations - * @type {Number} - */ - this.iterations = options.iterations || 10; - - /** - * The error tolerance, per constraint. If the total error is below this limit, the solver will stop iterating. Set to zero for as good solution as possible, but to something larger than zero to make computations faster. - * @property tolerance - * @type {Number} - * @default 1e-7 - */ - this.tolerance = options.tolerance || 1e-7; - - this.arrayStep = 30; - this.lambda = new Utils.ARRAY_TYPE(this.arrayStep); - this.Bs = new Utils.ARRAY_TYPE(this.arrayStep); - this.invCs = new Utils.ARRAY_TYPE(this.arrayStep); - - /** - * Set to true to set all right hand side terms to zero when solving. Can be handy for a few applications. - * @property useZeroRHS - * @type {Boolean} - */ - this.useZeroRHS = false; - - /** - * Number of solver iterations that are done to approximate normal forces. When these iterations are done, friction force will be computed from the contact normal forces. These friction forces will override any other friction forces set from the World for example. - * The solver will use less iterations if the solution is below the .tolerance. - * @property frictionIterations - * @type {Number} - */ - this.frictionIterations = 0; - - /** - * The number of iterations that were made during the last solve. If .tolerance is zero, this value will always be equal to .iterations, but if .tolerance is larger than zero, and the solver can quit early, then this number will be somewhere between 1 and .iterations. - * @property {Number} usedIterations - */ - this.usedIterations = 0; -} -GSSolver.prototype = new Solver(); -GSSolver.prototype.constructor = GSSolver; - -function setArrayZero(array){ - var l = array.length; - while(l--){ - array[l] = +0.0; - } -} - -/** - * Solve the system of equations - * @method solve - * @param {Number} h Time step - * @param {World} world World to solve - */ -GSSolver.prototype.solve = function(h, world){ - - this.sortEquations(); - - var iter = 0, - maxIter = this.iterations, - maxFrictionIter = this.frictionIterations, - equations = this.equations, - Neq = equations.length, - tolSquared = Math.pow(this.tolerance*Neq, 2), - bodies = world.bodies, - Nbodies = world.bodies.length, - add = vec2.add, - set = vec2.set, - useZeroRHS = this.useZeroRHS, - lambda = this.lambda; - - this.usedIterations = 0; - - if(Neq){ - for(var i=0; i!==Nbodies; i++){ - var b = bodies[i]; - - // Update solve mass - b.updateSolveMassProperties(); - } - } - - // Things that does not change during iteration can be computed once - if(lambda.length < Neq){ - lambda = this.lambda = new Utils.ARRAY_TYPE(Neq + this.arrayStep); - this.Bs = new Utils.ARRAY_TYPE(Neq + this.arrayStep); - this.invCs = new Utils.ARRAY_TYPE(Neq + this.arrayStep); - } - setArrayZero(lambda); - var invCs = this.invCs, - Bs = this.Bs, - lambda = this.lambda; - - for(var i=0; i!==equations.length; i++){ - var c = equations[i]; - if(c.timeStep !== h || c.needsUpdate){ - c.timeStep = h; - c.update(); - } - Bs[i] = c.computeB(c.a,c.b,h); - invCs[i] = c.computeInvC(c.epsilon); - } - - var q, B, c, deltalambdaTot,i,j; - - if(Neq !== 0){ - - for(i=0; i!==Nbodies; i++){ - var b = bodies[i]; - - // Reset vlambda - b.resetConstraintVelocity(); - } - - if(maxFrictionIter){ - // Iterate over contact equations to get normal forces - for(iter=0; iter!==maxFrictionIter; iter++){ - - // Accumulate the total error for each iteration. - deltalambdaTot = 0.0; - - for(j=0; j!==Neq; j++){ - c = equations[j]; - - var deltalambda = GSSolver.iterateEquation(j,c,c.epsilon,Bs,invCs,lambda,useZeroRHS,h,iter); - deltalambdaTot += Math.abs(deltalambda); - } - - this.usedIterations++; - - // If the total error is small enough - stop iterate - if(deltalambdaTot*deltalambdaTot <= tolSquared){ - break; - } - } - - GSSolver.updateMultipliers(equations, lambda, 1/h); - - // Set computed friction force - for(j=0; j!==Neq; j++){ - var eq = equations[j]; - if(eq instanceof FrictionEquation){ - var f = 0.0; - for(var k=0; k!==eq.contactEquations.length; k++){ - f += eq.contactEquations[k].multiplier; - } - f *= eq.frictionCoefficient / eq.contactEquations.length; - eq.maxForce = f; - eq.minForce = -f; - } - } - } - - // Iterate over all equations - for(iter=0; iter!==maxIter; iter++){ - - // Accumulate the total error for each iteration. - deltalambdaTot = 0.0; - - for(j=0; j!==Neq; j++){ - c = equations[j]; - - var deltalambda = GSSolver.iterateEquation(j,c,c.epsilon,Bs,invCs,lambda,useZeroRHS,h,iter); - deltalambdaTot += Math.abs(deltalambda); - } - - this.usedIterations++; - - // If the total error is small enough - stop iterate - if(deltalambdaTot*deltalambdaTot <= tolSquared){ - break; - } - } - - // Add result to velocity - for(i=0; i!==Nbodies; i++){ - bodies[i].addConstraintVelocity(); - } - - GSSolver.updateMultipliers(equations, lambda, 1/h); - } -}; - -// Sets the .multiplier property of each equation -GSSolver.updateMultipliers = function(equations, lambda, invDt){ - // Set the .multiplier property of each equation - var l = equations.length; - while(l--){ - equations[l].multiplier = lambda[l] * invDt; - } -}; - -GSSolver.iterateEquation = function(j,eq,eps,Bs,invCs,lambda,useZeroRHS,dt,iter){ - // Compute iteration - var B = Bs[j], - invC = invCs[j], - lambdaj = lambda[j], - GWlambda = eq.computeGWlambda(); - - var maxForce = eq.maxForce, - minForce = eq.minForce; - - if(useZeroRHS){ - B = 0; - } - - var deltalambda = invC * ( B - GWlambda - eps * lambdaj ); - - // Clamp if we are not within the min/max interval - var lambdaj_plus_deltalambda = lambdaj + deltalambda; - if(lambdaj_plus_deltalambda < minForce*dt){ - deltalambda = minForce*dt - lambdaj; - } else if(lambdaj_plus_deltalambda > maxForce*dt){ - deltalambda = maxForce*dt - lambdaj; - } - lambda[j] += deltalambda; - eq.addToWlambda(deltalambda); - - return deltalambda; -}; - -},{"../equations/FrictionEquation":23,"../math/vec2":30,"../utils/Utils":57,"./Solver":47}],47:[function(_dereq_,module,exports){ -var Utils = _dereq_('../utils/Utils') -, EventEmitter = _dereq_('../events/EventEmitter'); - -module.exports = Solver; - -/** - * Base class for constraint solvers. - * @class Solver - * @constructor - * @extends EventEmitter - */ -function Solver(options,type){ - options = options || {}; - - EventEmitter.call(this); - - this.type = type; - - /** - * Current equations in the solver. - * - * @property equations - * @type {Array} - */ - this.equations = []; - - /** - * Function that is used to sort all equations before each solve. - * @property equationSortFunction - * @type {function|boolean} - */ - this.equationSortFunction = options.equationSortFunction || false; -} -Solver.prototype = new EventEmitter(); -Solver.prototype.constructor = Solver; - -/** - * Method to be implemented in each subclass - * @method solve - * @param {Number} dt - * @param {World} world - */ -Solver.prototype.solve = function(dt,world){ - throw new Error("Solver.solve should be implemented by subclasses!"); -}; - -var mockWorld = {bodies:[]}; - -/** - * Solves all constraints in an island. - * @method solveIsland - * @param {Number} dt - * @param {Island} island - */ -Solver.prototype.solveIsland = function(dt,island){ - - this.removeAllEquations(); - - if(island.equations.length){ - // Add equations to solver - this.addEquations(island.equations); - mockWorld.bodies.length = 0; - island.getBodies(mockWorld.bodies); - - // Solve - if(mockWorld.bodies.length){ - this.solve(dt,mockWorld); - } - } -}; - -/** - * Sort all equations using the .equationSortFunction. Should be called by subclasses before solving. - * @method sortEquations - */ -Solver.prototype.sortEquations = function(){ - if(this.equationSortFunction){ - this.equations.sort(this.equationSortFunction); - } -}; - -/** - * Add an equation to be solved. - * - * @method addEquation - * @param {Equation} eq - */ -Solver.prototype.addEquation = function(eq){ - if(eq.enabled){ - this.equations.push(eq); - } -}; - -/** - * Add equations. Same as .addEquation, but this time the argument is an array of Equations - * - * @method addEquations - * @param {Array} eqs - */ -Solver.prototype.addEquations = function(eqs){ - //Utils.appendArray(this.equations,eqs); - for(var i=0, N=eqs.length; i!==N; i++){ - var eq = eqs[i]; - if(eq.enabled){ - this.equations.push(eq); - } - } -}; - -/** - * Remove an equation. - * - * @method removeEquation - * @param {Equation} eq - */ -Solver.prototype.removeEquation = function(eq){ - var i = this.equations.indexOf(eq); - if(i !== -1){ - this.equations.splice(i,1); - } -}; - -/** - * Remove all currently added equations. - * - * @method removeAllEquations - */ -Solver.prototype.removeAllEquations = function(){ - this.equations.length=0; -}; - -Solver.GS = 1; -Solver.ISLAND = 2; - -},{"../events/EventEmitter":26,"../utils/Utils":57}],48:[function(_dereq_,module,exports){ -var ContactEquation = _dereq_('../equations/ContactEquation'); -var Pool = _dereq_('./Pool'); - -module.exports = ContactEquationPool; - -/** - * @class - */ -function ContactEquationPool() { - Pool.apply(this, arguments); -} -ContactEquationPool.prototype = new Pool(); -ContactEquationPool.prototype.constructor = ContactEquationPool; - -/** - * @method create - * @return {ContactEquation} - */ -ContactEquationPool.prototype.create = function () { - return new ContactEquation(); -}; - -/** - * @method destroy - * @param {ContactEquation} equation - * @return {ContactEquationPool} - */ -ContactEquationPool.prototype.destroy = function (equation) { - equation.bodyA = equation.bodyB = null; - return this; -}; - -},{"../equations/ContactEquation":21,"./Pool":55}],49:[function(_dereq_,module,exports){ -var FrictionEquation = _dereq_('../equations/FrictionEquation'); -var Pool = _dereq_('./Pool'); - -module.exports = FrictionEquationPool; - -/** - * @class - */ -function FrictionEquationPool() { - Pool.apply(this, arguments); -} -FrictionEquationPool.prototype = new Pool(); -FrictionEquationPool.prototype.constructor = FrictionEquationPool; - -/** - * @method create - * @return {FrictionEquation} - */ -FrictionEquationPool.prototype.create = function () { - return new FrictionEquation(); -}; - -/** - * @method destroy - * @param {FrictionEquation} equation - * @return {FrictionEquationPool} - */ -FrictionEquationPool.prototype.destroy = function (equation) { - equation.bodyA = equation.bodyB = null; - return this; -}; - -},{"../equations/FrictionEquation":23,"./Pool":55}],50:[function(_dereq_,module,exports){ -var IslandNode = _dereq_('../world/IslandNode'); -var Pool = _dereq_('./Pool'); - -module.exports = IslandNodePool; - -/** - * @class - */ -function IslandNodePool() { - Pool.apply(this, arguments); -} -IslandNodePool.prototype = new Pool(); -IslandNodePool.prototype.constructor = IslandNodePool; - -/** - * @method create - * @return {IslandNode} - */ -IslandNodePool.prototype.create = function () { - return new IslandNode(); -}; - -/** - * @method destroy - * @param {IslandNode} node - * @return {IslandNodePool} - */ -IslandNodePool.prototype.destroy = function (node) { - node.reset(); - return this; -}; - -},{"../world/IslandNode":60,"./Pool":55}],51:[function(_dereq_,module,exports){ -var Island = _dereq_('../world/Island'); -var Pool = _dereq_('./Pool'); - -module.exports = IslandPool; - -/** - * @class - */ -function IslandPool() { - Pool.apply(this, arguments); -} -IslandPool.prototype = new Pool(); -IslandPool.prototype.constructor = IslandPool; - -/** - * @method create - * @return {Island} - */ -IslandPool.prototype.create = function () { - return new Island(); -}; - -/** - * @method destroy - * @param {Island} island - * @return {IslandPool} - */ -IslandPool.prototype.destroy = function (island) { - island.reset(); - return this; -}; - -},{"../world/Island":58,"./Pool":55}],52:[function(_dereq_,module,exports){ -var TupleDictionary = _dereq_('./TupleDictionary'); -var OverlapKeeperRecord = _dereq_('./OverlapKeeperRecord'); -var OverlapKeeperRecordPool = _dereq_('./OverlapKeeperRecordPool'); -var Utils = _dereq_('./Utils'); - -module.exports = OverlapKeeper; - -/** - * Keeps track of overlaps in the current state and the last step state. - * @class OverlapKeeper - * @constructor - */ -function OverlapKeeper() { - this.overlappingShapesLastState = new TupleDictionary(); - this.overlappingShapesCurrentState = new TupleDictionary(); - this.recordPool = new OverlapKeeperRecordPool({ size: 16 }); - this.tmpDict = new TupleDictionary(); - this.tmpArray1 = []; -} - -/** - * Ticks one step forward in time. This will move the current overlap state to the "old" overlap state, and create a new one as current. - * @method tick - */ -OverlapKeeper.prototype.tick = function() { - var last = this.overlappingShapesLastState; - var current = this.overlappingShapesCurrentState; - - // Save old objects into pool - var l = last.keys.length; - while(l--){ - var key = last.keys[l]; - var lastObject = last.getByKey(key); - var currentObject = current.getByKey(key); - if(lastObject){ - // The record is only used in the "last" dict, and will be removed. We might as well pool it. - this.recordPool.release(lastObject); - } - } - - // Clear last object - last.reset(); - - // Transfer from new object to old - last.copy(current); - - // Clear current object - current.reset(); -}; - -/** - * @method setOverlapping - * @param {Body} bodyA - * @param {Body} shapeA - * @param {Body} bodyB - * @param {Body} shapeB - */ -OverlapKeeper.prototype.setOverlapping = function(bodyA, shapeA, bodyB, shapeB) { - var last = this.overlappingShapesLastState; - var current = this.overlappingShapesCurrentState; - - // Store current contact state - if(!current.get(shapeA.id, shapeB.id)){ - var data = this.recordPool.get(); - data.set(bodyA, shapeA, bodyB, shapeB); - current.set(shapeA.id, shapeB.id, data); - } -}; - -OverlapKeeper.prototype.getNewOverlaps = function(result){ - return this.getDiff(this.overlappingShapesLastState, this.overlappingShapesCurrentState, result); -}; - -OverlapKeeper.prototype.getEndOverlaps = function(result){ - return this.getDiff(this.overlappingShapesCurrentState, this.overlappingShapesLastState, result); -}; - -/** - * Checks if two bodies are currently overlapping. - * @method bodiesAreOverlapping - * @param {Body} bodyA - * @param {Body} bodyB - * @return {boolean} - */ -OverlapKeeper.prototype.bodiesAreOverlapping = function(bodyA, bodyB){ - var current = this.overlappingShapesCurrentState; - var l = current.keys.length; - while(l--){ - var key = current.keys[l]; - var data = current.data[key]; - if((data.bodyA === bodyA && data.bodyB === bodyB) || data.bodyA === bodyB && data.bodyB === bodyA){ - return true; - } - } - return false; -}; - -OverlapKeeper.prototype.getDiff = function(dictA, dictB, result){ - var result = result || []; - var last = dictA; - var current = dictB; - - result.length = 0; - - var l = current.keys.length; - while(l--){ - var key = current.keys[l]; - var data = current.data[key]; - - if(!data){ - throw new Error('Key '+key+' had no data!'); - } - - var lastData = last.data[key]; - if(!lastData){ - // Not overlapping in last state, but in current. - result.push(data); - } - } - - return result; -}; - -OverlapKeeper.prototype.isNewOverlap = function(shapeA, shapeB){ - var idA = shapeA.id|0, - idB = shapeB.id|0; - var last = this.overlappingShapesLastState; - var current = this.overlappingShapesCurrentState; - // Not in last but in new - return !!!last.get(idA, idB) && !!current.get(idA, idB); -}; - -OverlapKeeper.prototype.getNewBodyOverlaps = function(result){ - this.tmpArray1.length = 0; - var overlaps = this.getNewOverlaps(this.tmpArray1); - return this.getBodyDiff(overlaps, result); -}; - -OverlapKeeper.prototype.getEndBodyOverlaps = function(result){ - this.tmpArray1.length = 0; - var overlaps = this.getEndOverlaps(this.tmpArray1); - return this.getBodyDiff(overlaps, result); -}; - -OverlapKeeper.prototype.getBodyDiff = function(overlaps, result){ - result = result || []; - var accumulator = this.tmpDict; - - var l = overlaps.length; - - while(l--){ - var data = overlaps[l]; - - // Since we use body id's for the accumulator, these will be a subset of the original one - accumulator.set(data.bodyA.id|0, data.bodyB.id|0, data); - } - - l = accumulator.keys.length; - while(l--){ - var data = accumulator.getByKey(accumulator.keys[l]); - if(data){ - result.push(data.bodyA, data.bodyB); - } - } - - accumulator.reset(); - - return result; -}; - -},{"./OverlapKeeperRecord":53,"./OverlapKeeperRecordPool":54,"./TupleDictionary":56,"./Utils":57}],53:[function(_dereq_,module,exports){ -module.exports = OverlapKeeperRecord; - -/** - * Overlap data container for the OverlapKeeper - * @class OverlapKeeperRecord - * @constructor - * @param {Body} bodyA - * @param {Shape} shapeA - * @param {Body} bodyB - * @param {Shape} shapeB - */ -function OverlapKeeperRecord(bodyA, shapeA, bodyB, shapeB){ - /** - * @property {Shape} shapeA - */ - this.shapeA = shapeA; - /** - * @property {Shape} shapeB - */ - this.shapeB = shapeB; - /** - * @property {Body} bodyA - */ - this.bodyA = bodyA; - /** - * @property {Body} bodyB - */ - this.bodyB = bodyB; -} - -/** - * Set the data for the record - * @method set - * @param {Body} bodyA - * @param {Shape} shapeA - * @param {Body} bodyB - * @param {Shape} shapeB - */ -OverlapKeeperRecord.prototype.set = function(bodyA, shapeA, bodyB, shapeB){ - OverlapKeeperRecord.call(this, bodyA, shapeA, bodyB, shapeB); -}; - -},{}],54:[function(_dereq_,module,exports){ -var OverlapKeeperRecord = _dereq_('./OverlapKeeperRecord'); -var Pool = _dereq_('./Pool'); - -module.exports = OverlapKeeperRecordPool; - -/** - * @class - */ -function OverlapKeeperRecordPool() { - Pool.apply(this, arguments); -} -OverlapKeeperRecordPool.prototype = new Pool(); -OverlapKeeperRecordPool.prototype.constructor = OverlapKeeperRecordPool; - -/** - * @method create - * @return {OverlapKeeperRecord} - */ -OverlapKeeperRecordPool.prototype.create = function () { - return new OverlapKeeperRecord(); -}; - -/** - * @method destroy - * @param {OverlapKeeperRecord} record - * @return {OverlapKeeperRecordPool} - */ -OverlapKeeperRecordPool.prototype.destroy = function (record) { - record.bodyA = record.bodyB = record.shapeA = record.shapeB = null; - return this; -}; - -},{"./OverlapKeeperRecord":53,"./Pool":55}],55:[function(_dereq_,module,exports){ -module.exports = Pool; - -/** - * @class Object pooling utility. - */ -function Pool(options) { - options = options || {}; - - /** - * @property {Array} objects - * @type {Array} - */ - this.objects = []; - - if(options.size !== undefined){ - this.resize(options.size); - } -} - -/** - * @method resize - * @param {number} size - * @return {Pool} Self, for chaining - */ -Pool.prototype.resize = function (size) { - var objects = this.objects; - - while (objects.length > size) { - objects.pop(); - } - - while (objects.length < size) { - objects.push(this.create()); - } - - return this; -}; - -/** - * Get an object from the pool or create a new instance. - * @method get - * @return {Object} - */ -Pool.prototype.get = function () { - var objects = this.objects; - return objects.length ? objects.pop() : this.create(); -}; - -/** - * Clean up and put the object back into the pool for later use. - * @method release - * @param {Object} object - * @return {Pool} Self for chaining - */ -Pool.prototype.release = function (object) { - this.destroy(object); - this.objects.push(object); - return this; -}; - -},{}],56:[function(_dereq_,module,exports){ -var Utils = _dereq_('./Utils'); - -module.exports = TupleDictionary; - -/** - * @class TupleDictionary - * @constructor - */ -function TupleDictionary() { - - /** - * The data storage - * @property data - * @type {Object} - */ - this.data = {}; - - /** - * Keys that are currently used. - * @property {Array} keys - */ - this.keys = []; -} - -/** - * Generate a key given two integers - * @method getKey - * @param {number} i - * @param {number} j - * @return {string} - */ -TupleDictionary.prototype.getKey = function(id1, id2) { - id1 = id1|0; - id2 = id2|0; - - if ( (id1|0) === (id2|0) ){ - return -1; - } - - // valid for values < 2^16 - return ((id1|0) > (id2|0) ? - (id1 << 16) | (id2 & 0xFFFF) : - (id2 << 16) | (id1 & 0xFFFF))|0 - ; -}; - -/** - * @method getByKey - * @param {Number} key - * @return {Object} - */ -TupleDictionary.prototype.getByKey = function(key) { - key = key|0; - return this.data[key]; -}; - -/** - * @method get - * @param {Number} i - * @param {Number} j - * @return {Number} - */ -TupleDictionary.prototype.get = function(i, j) { - return this.data[this.getKey(i, j)]; -}; - -/** - * Set a value. - * @method set - * @param {Number} i - * @param {Number} j - * @param {Number} value - */ -TupleDictionary.prototype.set = function(i, j, value) { - if(!value){ - throw new Error("No data!"); - } - - var key = this.getKey(i, j); - - // Check if key already exists - if(!this.data[key]){ - this.keys.push(key); - } - - this.data[key] = value; - - return key; -}; - -/** - * Remove all data. - * @method reset - */ -TupleDictionary.prototype.reset = function() { - var data = this.data, - keys = this.keys; - - var l = keys.length; - while(l--) { - delete data[keys[l]]; - } - - keys.length = 0; -}; - -/** - * Copy another TupleDictionary. Note that all data in this dictionary will be removed. - * @method copy - * @param {TupleDictionary} dict The TupleDictionary to copy into this one. - */ -TupleDictionary.prototype.copy = function(dict) { - this.reset(); - Utils.appendArray(this.keys, dict.keys); - var l = dict.keys.length; - while(l--){ - var key = dict.keys[l]; - this.data[key] = dict.data[key]; - } -}; - -},{"./Utils":57}],57:[function(_dereq_,module,exports){ -/* global P2_ARRAY_TYPE */ - -module.exports = Utils; - -/** - * Misc utility functions - * @class Utils - * @constructor - */ -function Utils(){} - -/** - * Append the values in array b to the array a. See this for an explanation. - * @method appendArray - * @static - * @param {Array} a - * @param {Array} b - */ -Utils.appendArray = function(a,b){ - if (b.length < 150000) { - a.push.apply(a, b); - } else { - for (var i = 0, len = b.length; i !== len; ++i) { - a.push(b[i]); - } - } -}; - -/** - * Garbage free Array.splice(). Does not allocate a new array. - * @method splice - * @static - * @param {Array} array - * @param {Number} index - * @param {Number} howmany - */ -Utils.splice = function(array,index,howmany){ - howmany = howmany || 1; - for (var i=index, len=array.length-howmany; i < len; i++){ - array[i] = array[i + howmany]; - } - array.length = len; -}; - -/** - * The array type to use for internal numeric computations throughout the library. Float32Array is used if it is available, but falls back on Array. If you want to set array type manually, inject it via the global variable P2_ARRAY_TYPE. See example below. - * @static - * @property {function} ARRAY_TYPE - * @example - * - * - */ -if(typeof P2_ARRAY_TYPE !== 'undefined') { - Utils.ARRAY_TYPE = P2_ARRAY_TYPE; -} else if (typeof Float32Array !== 'undefined'){ - Utils.ARRAY_TYPE = Float32Array; -} else { - Utils.ARRAY_TYPE = Array; -} - -/** - * Extend an object with the properties of another - * @static - * @method extend - * @param {object} a - * @param {object} b - */ -Utils.extend = function(a,b){ - for(var key in b){ - a[key] = b[key]; - } -}; - -/** - * Extend an options object with default values. - * @static - * @method defaults - * @param {object} options The options object. May be falsy: in this case, a new object is created and returned. - * @param {object} defaults An object containing default values. - * @return {object} The modified options object. - */ -Utils.defaults = function(options, defaults){ - options = options || {}; - for(var key in defaults){ - if(!(key in options)){ - options[key] = defaults[key]; - } - } - return options; -}; - -},{}],58:[function(_dereq_,module,exports){ -var Body = _dereq_('../objects/Body'); - -module.exports = Island; - -/** - * An island of bodies connected with equations. - * @class Island - * @constructor - */ -function Island(){ - - /** - * Current equations in this island. - * @property equations - * @type {Array} - */ - this.equations = []; - - /** - * Current bodies in this island. - * @property bodies - * @type {Array} - */ - this.bodies = []; -} - -/** - * Clean this island from bodies and equations. - * @method reset - */ -Island.prototype.reset = function(){ - this.equations.length = this.bodies.length = 0; -}; - -var bodyIds = []; - -/** - * Get all unique bodies in this island. - * @method getBodies - * @return {Array} An array of Body - */ -Island.prototype.getBodies = function(result){ - var bodies = result || [], - eqs = this.equations; - bodyIds.length = 0; - for(var i=0; i!==eqs.length; i++){ - var eq = eqs[i]; - if(bodyIds.indexOf(eq.bodyA.id)===-1){ - bodies.push(eq.bodyA); - bodyIds.push(eq.bodyA.id); - } - if(bodyIds.indexOf(eq.bodyB.id)===-1){ - bodies.push(eq.bodyB); - bodyIds.push(eq.bodyB.id); - } - } - return bodies; -}; - -/** - * Check if the entire island wants to sleep. - * @method wantsToSleep - * @return {Boolean} - */ -Island.prototype.wantsToSleep = function(){ - for(var i=0; i= dt && substeps < maxSubSteps) { - // Do fixed steps to catch up - this.internalStep(dt); - this.time += dt; - this.accumulator -= dt; - substeps++; - } - - var t = (this.accumulator % dt) / dt; - for(var j=0; j!==this.bodies.length; j++){ - var b = this.bodies[j]; - vec2.lerp(b.interpolatedPosition, b.previousPosition, b.position, t); - b.interpolatedAngle = b.previousAngle + t * (b.angle - b.previousAngle); - } - } -}; - -var endOverlaps = []; - -/** - * Make a fixed step. - * @method internalStep - * @param {number} dt - * @private - */ -World.prototype.internalStep = function(dt){ - this.stepping = true; - - var that = this, - Nsprings = this.springs.length, - springs = this.springs, - bodies = this.bodies, - g = this.gravity, - solver = this.solver, - Nbodies = this.bodies.length, - broadphase = this.broadphase, - np = this.narrowphase, - constraints = this.constraints, - t0, t1, - fhMinv = step_fhMinv, - velodt = step_velodt, - mg = step_mg, - scale = vec2.scale, - add = vec2.add, - rotate = vec2.rotate, - islandManager = this.islandManager; - - this.overlapKeeper.tick(); - - this.lastTimeStep = dt; - - // Update approximate friction gravity. - if(this.useWorldGravityAsFrictionGravity){ - var gravityLen = vec2.length(this.gravity); - if(!(gravityLen === 0 && this.useFrictionGravityOnZeroGravity)){ - // Nonzero gravity. Use it. - this.frictionGravity = gravityLen; - } - } - - // Add gravity to bodies - if(this.applyGravity){ - for(var i=0; i!==Nbodies; i++){ - var b = bodies[i], - fi = b.force; - if(b.type !== Body.DYNAMIC || b.sleepState === Body.SLEEPING){ - continue; - } - vec2.scale(mg,g,b.mass*b.gravityScale); // F=m*g - add(fi,fi,mg); - } - } - - // Add spring forces - if(this.applySpringForces){ - for(var i=0; i!==Nsprings; i++){ - var s = springs[i]; - s.applyForce(); - } - } - - if(this.applyDamping){ - for(var i=0; i!==Nbodies; i++){ - var b = bodies[i]; - if(b.type === Body.DYNAMIC){ - b.applyDamping(dt); - } - } - } - - // Broadphase - var result = broadphase.getCollisionPairs(this); - - // Remove ignored collision pairs - var ignoredPairs = this.disabledBodyCollisionPairs; - for(var i=ignoredPairs.length-2; i>=0; i-=2){ - for(var j=result.length-2; j>=0; j-=2){ - if( (ignoredPairs[i] === result[j] && ignoredPairs[i+1] === result[j+1]) || - (ignoredPairs[i+1] === result[j] && ignoredPairs[i] === result[j+1])){ - result.splice(j,2); - } - } - } - - // Remove constrained pairs with collideConnected == false - var Nconstraints = constraints.length; - for(i=0; i!==Nconstraints; i++){ - var c = constraints[i]; - if(!c.collideConnected){ - for(var j=result.length-2; j>=0; j-=2){ - if( (c.bodyA === result[j] && c.bodyB === result[j+1]) || - (c.bodyB === result[j] && c.bodyA === result[j+1])){ - result.splice(j,2); - } - } - } - } - - // postBroadphase event - this.postBroadphaseEvent.pairs = result; - this.emit(this.postBroadphaseEvent); - this.postBroadphaseEvent.pairs = null; - - // Narrowphase - np.reset(this); - for(var i=0, Nresults=result.length; i!==Nresults; i+=2){ - var bi = result[i], - bj = result[i+1]; - - // Loop over all shapes of body i - for(var k=0, Nshapesi=bi.shapes.length; k!==Nshapesi; k++){ - var si = bi.shapes[k], - xi = si.position, - ai = si.angle; - - // All shapes of body j - for(var l=0, Nshapesj=bj.shapes.length; l!==Nshapesj; l++){ - var sj = bj.shapes[l], - xj = sj.position, - aj = sj.angle; - - var cm = this.defaultContactMaterial; - if(si.material && sj.material){ - var tmp = this.getContactMaterial(si.material,sj.material); - if(tmp){ - cm = tmp; - } - } - - this.runNarrowphase(np,bi,si,xi,ai,bj,sj,xj,aj,cm,this.frictionGravity); - } - } - } - - // Wake up bodies - for(var i=0; i!==Nbodies; i++){ - var body = bodies[i]; - if(body._wakeUpAfterNarrowphase){ - body.wakeUp(); - body._wakeUpAfterNarrowphase = false; - } - } - - // Emit end overlap events - if(this.has('endContact')){ - this.overlapKeeper.getEndOverlaps(endOverlaps); - var e = this.endContactEvent; - var l = endOverlaps.length; - while(l--){ - var data = endOverlaps[l]; - e.shapeA = data.shapeA; - e.shapeB = data.shapeB; - e.bodyA = data.bodyA; - e.bodyB = data.bodyB; - this.emit(e); - } - endOverlaps.length = 0; - } - - var preSolveEvent = this.preSolveEvent; - preSolveEvent.contactEquations = np.contactEquations; - preSolveEvent.frictionEquations = np.frictionEquations; - this.emit(preSolveEvent); - preSolveEvent.contactEquations = preSolveEvent.frictionEquations = null; - - // update constraint equations - var Nconstraints = constraints.length; - for(i=0; i!==Nconstraints; i++){ - constraints[i].update(); - } - - if(np.contactEquations.length || np.frictionEquations.length || Nconstraints){ - if(this.islandSplit){ - // Split into islands - islandManager.equations.length = 0; - Utils.appendArray(islandManager.equations, np.contactEquations); - Utils.appendArray(islandManager.equations, np.frictionEquations); - for(i=0; i!==Nconstraints; i++){ - Utils.appendArray(islandManager.equations, constraints[i].equations); - } - islandManager.split(this); - - for(var i=0; i!==islandManager.islands.length; i++){ - var island = islandManager.islands[i]; - if(island.equations.length){ - solver.solveIsland(dt,island); - } - } - - } else { - - // Add contact equations to solver - solver.addEquations(np.contactEquations); - solver.addEquations(np.frictionEquations); - - // Add user-defined constraint equations - for(i=0; i!==Nconstraints; i++){ - solver.addEquations(constraints[i].equations); - } - - if(this.solveConstraints){ - solver.solve(dt,this); - } - - solver.removeAllEquations(); - } - } - - // Step forward - for(var i=0; i!==Nbodies; i++){ - var body = bodies[i]; - - // if(body.sleepState !== Body.SLEEPING && body.type !== Body.STATIC){ - body.integrate(dt); - // } - } - - // Reset force - for(var i=0; i!==Nbodies; i++){ - bodies[i].setZeroForce(); - } - - // Emit impact event - if(this.emitImpactEvent && this.has('impact')){ - var ev = this.impactEvent; - for(var i=0; i!==np.contactEquations.length; i++){ - var eq = np.contactEquations[i]; - if(eq.firstImpact){ - ev.bodyA = eq.bodyA; - ev.bodyB = eq.bodyB; - ev.shapeA = eq.shapeA; - ev.shapeB = eq.shapeB; - ev.contactEquation = eq; - this.emit(ev); - } - } - } - - // Sleeping update - if(this.sleepMode === World.BODY_SLEEPING){ - for(i=0; i!==Nbodies; i++){ - bodies[i].sleepTick(this.time, false, dt); - } - } else if(this.sleepMode === World.ISLAND_SLEEPING && this.islandSplit){ - - // Tell all bodies to sleep tick but dont sleep yet - for(i=0; i!==Nbodies; i++){ - bodies[i].sleepTick(this.time, true, dt); - } - - // Sleep islands - for(var i=0; i 0; - np.frictionCoefficient = cm.friction; - var reducedMass; - if(bi.type === Body.STATIC || bi.type === Body.KINEMATIC){ - reducedMass = bj.mass; - } else if(bj.type === Body.STATIC || bj.type === Body.KINEMATIC){ - reducedMass = bi.mass; - } else { - reducedMass = (bi.mass*bj.mass)/(bi.mass+bj.mass); - } - np.slipForce = cm.friction*glen*reducedMass; - np.restitution = cm.restitution; - np.surfaceVelocity = cm.surfaceVelocity; - np.frictionStiffness = cm.frictionStiffness; - np.frictionRelaxation = cm.frictionRelaxation; - np.stiffness = cm.stiffness; - np.relaxation = cm.relaxation; - np.contactSkinSize = cm.contactSkinSize; - np.enabledEquations = bi.collisionResponse && bj.collisionResponse && si.collisionResponse && sj.collisionResponse; - - var resolver = np[si.type | sj.type], - numContacts = 0; - if (resolver) { - var sensor = si.sensor || sj.sensor; - var numFrictionBefore = np.frictionEquations.length; - if (si.type < sj.type) { - numContacts = resolver.call(np, bi,si,xiw,aiw, bj,sj,xjw,ajw, sensor); - } else { - numContacts = resolver.call(np, bj,sj,xjw,ajw, bi,si,xiw,aiw, sensor); - } - var numFrictionEquations = np.frictionEquations.length - numFrictionBefore; - - if(numContacts){ - - if( bi.allowSleep && - bi.type === Body.DYNAMIC && - bi.sleepState === Body.SLEEPING && - bj.sleepState === Body.AWAKE && - bj.type !== Body.STATIC - ){ - var speedSquaredB = vec2.squaredLength(bj.velocity) + Math.pow(bj.angularVelocity,2); - var speedLimitSquaredB = Math.pow(bj.sleepSpeedLimit,2); - if(speedSquaredB >= speedLimitSquaredB*2){ - bi._wakeUpAfterNarrowphase = true; - } - } - - if( bj.allowSleep && - bj.type === Body.DYNAMIC && - bj.sleepState === Body.SLEEPING && - bi.sleepState === Body.AWAKE && - bi.type !== Body.STATIC - ){ - var speedSquaredA = vec2.squaredLength(bi.velocity) + Math.pow(bi.angularVelocity,2); - var speedLimitSquaredA = Math.pow(bi.sleepSpeedLimit,2); - if(speedSquaredA >= speedLimitSquaredA*2){ - bj._wakeUpAfterNarrowphase = true; - } - } - - this.overlapKeeper.setOverlapping(bi, si, bj, sj); - if(this.has('beginContact') && this.overlapKeeper.isNewOverlap(si, sj)){ - - // Report new shape overlap - var e = this.beginContactEvent; - e.shapeA = si; - e.shapeB = sj; - e.bodyA = bi; - e.bodyB = bj; - - // Reset contact equations - e.contactEquations.length = 0; - - if(typeof(numContacts)==="number"){ - for(var i=np.contactEquations.length-numContacts; i 1){ // Why divide by 1? - for(var i=np.frictionEquations.length-numFrictionEquations; i=0; i--){ - this.removeConstraint(cs[i]); - } - - // Remove all bodies - var bodies = this.bodies; - for(var i=bodies.length-1; i>=0; i--){ - this.removeBody(bodies[i]); - } - - // Remove all springs - var springs = this.springs; - for(var i=springs.length-1; i>=0; i--){ - this.removeSpring(springs[i]); - } - - // Remove all contact materials - var cms = this.contactMaterials; - for(var i=cms.length-1; i>=0; i--){ - this.removeContactMaterial(cms[i]); - } - - World.apply(this); -}; - -var hitTest_tmp1 = vec2.create(), - hitTest_zero = vec2.fromValues(0,0), - hitTest_tmp2 = vec2.fromValues(0,0); - -/** - * Test if a world point overlaps bodies - * @method hitTest - * @param {Array} worldPoint Point to use for intersection tests - * @param {Array} bodies A list of objects to check for intersection - * @param {Number} precision Used for matching against particles and lines. Adds some margin to these infinitesimal objects. - * @return {Array} Array of bodies that overlap the point - * @todo Should use an api similar to the raycast function - * @todo Should probably implement a .containsPoint method for all shapes. Would be more efficient - */ -World.prototype.hitTest = function(worldPoint,bodies,precision){ - precision = precision || 0; - - // Create a dummy particle body with a particle shape to test against the bodies - var pb = new Body({ position:worldPoint }), - ps = new Particle(), - px = worldPoint, - pa = 0, - x = hitTest_tmp1, - zero = hitTest_zero, - tmp = hitTest_tmp2; - pb.addShape(ps); - - var n = this.narrowphase, - result = []; - - // Check bodies - for(var i=0, N=bodies.length; i!==N; i++){ - var b = bodies[i]; - - for(var j=0, NS=b.shapes.length; j!==NS; j++){ - var s = b.shapes[j]; - - // Get shape world position + angle - vec2.rotate(x, s.position, b.angle); - vec2.add(x, x, b.position); - var a = s.angle + b.angle; - - if( (s instanceof Circle && n.circleParticle (b,s,x,a, pb,ps,px,pa, true)) || - (s instanceof Convex && n.particleConvex (pb,ps,px,pa, b,s,x,a, true)) || - (s instanceof Plane && n.particlePlane (pb,ps,px,pa, b,s,x,a, true)) || - (s instanceof Capsule && n.particleCapsule (pb,ps,px,pa, b,s,x,a, true)) || - (s instanceof Particle && vec2.squaredLength(vec2.sub(tmp,x,worldPoint)) < precision*precision) - ){ - result.push(b); - } - } - } - - return result; -}; - -/** - * Set the stiffness for all equations and contact materials. - * @method setGlobalStiffness - * @param {Number} stiffness - */ -World.prototype.setGlobalStiffness = function(stiffness){ - - // Set for all constraints - var constraints = this.constraints; - for(var i=0; i !== constraints.length; i++){ - var c = constraints[i]; - for(var j=0; j !== c.equations.length; j++){ - var eq = c.equations[j]; - eq.stiffness = stiffness; - eq.needsUpdate = true; - } - } - - // Set for all contact materials - var contactMaterials = this.contactMaterials; - for(var i=0; i !== contactMaterials.length; i++){ - var c = contactMaterials[i]; - c.stiffness = c.frictionStiffness = stiffness; - } - - // Set for default contact material - var c = this.defaultContactMaterial; - c.stiffness = c.frictionStiffness = stiffness; -}; - -/** - * Set the relaxation for all equations and contact materials. - * @method setGlobalRelaxation - * @param {Number} relaxation - */ -World.prototype.setGlobalRelaxation = function(relaxation){ - - // Set for all constraints - for(var i=0; i !== this.constraints.length; i++){ - var c = this.constraints[i]; - for(var j=0; j !== c.equations.length; j++){ - var eq = c.equations[j]; - eq.relaxation = relaxation; - eq.needsUpdate = true; - } - } - - // Set for all contact materials - for(var i=0; i !== this.contactMaterials.length; i++){ - var c = this.contactMaterials[i]; - c.relaxation = c.frictionRelaxation = relaxation; - } - - // Set for default contact material - var c = this.defaultContactMaterial; - c.relaxation = c.frictionRelaxation = relaxation; -}; - -var tmpAABB = new AABB(); -var tmpArray = []; - -/** - * Ray cast against all bodies in the world. - * @method raycast - * @param {RaycastResult} result - * @param {Ray} ray - * @return {boolean} True if any body was hit. - * - * @example - * var ray = new Ray({ - * mode: Ray.CLOSEST, // or ANY - * from: [0, 0], - * to: [10, 0], - * }); - * var result = new RaycastResult(); - * world.raycast(result, ray); - * - * // Get the hit point - * var hitPoint = vec2.create(); - * result.getHitPoint(hitPoint, ray); - * console.log('Hit point: ', hitPoint[0], hitPoint[1], ' at distance ' + result.getHitDistance(ray)); - * - * @example - * var ray = new Ray({ - * mode: Ray.ALL, - * from: [0, 0], - * to: [10, 0], - * callback: function(result){ - * - * // Print some info about the hit - * console.log('Hit body and shape: ', result.body, result.shape); - * - * // Get the hit point - * var hitPoint = vec2.create(); - * result.getHitPoint(hitPoint, ray); - * console.log('Hit point: ', hitPoint[0], hitPoint[1], ' at distance ' + result.getHitDistance(ray)); - * - * // If you are happy with the hits you got this far, you can stop the traversal here: - * result.stop(); - * } - * }); - * var result = new RaycastResult(); - * world.raycast(result, ray); - */ -World.prototype.raycast = function(result, ray){ - - // Get all bodies within the ray AABB - ray.getAABB(tmpAABB); - this.broadphase.aabbQuery(this, tmpAABB, tmpArray); - ray.intersectBodies(result, tmpArray); - tmpArray.length = 0; - - return result.hasHit(); -}; - -},{"../../package.json":6,"../collision/AABB":7,"../collision/Broadphase":8,"../collision/Narrowphase":10,"../collision/Ray":11,"../collision/SAPBroadphase":13,"../constraints/Constraint":14,"../constraints/DistanceConstraint":15,"../constraints/GearConstraint":16,"../constraints/LockConstraint":17,"../constraints/PrismaticConstraint":18,"../constraints/RevoluteConstraint":19,"../events/EventEmitter":26,"../material/ContactMaterial":27,"../material/Material":28,"../math/vec2":30,"../objects/Body":31,"../objects/LinearSpring":32,"../objects/RotationalSpring":33,"../shapes/Capsule":38,"../shapes/Circle":39,"../shapes/Convex":40,"../shapes/Line":42,"../shapes/Particle":43,"../shapes/Plane":44,"../shapes/Shape":45,"../solver/GSSolver":46,"../solver/Solver":47,"../utils/OverlapKeeper":52,"../utils/Utils":57,"./IslandManager":59}]},{},[36]) -(36) -}); -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -(function(){ - - var root = this; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * The [pixi.js](http://www.pixijs.com/) module/namespace. - * - * @module PIXI - */ - -/** - * Namespace-class for [pixi.js](http://www.pixijs.com/). - * - * Contains assorted static properties and enumerations. - * - * @class PIXI - * @static - */ -var PIXI = PIXI || {}; - -/** - * A reference to the Phaser Game instance that owns this Pixi renderer. - * @property {Phaser.Game} game - * @static - */ -PIXI.game = null; - -/** - * @property {Number} WEBGL_RENDERER - * @protected - * @static - */ -PIXI.WEBGL_RENDERER = 0; - -/** - * @property {Number} CANVAS_RENDERER - * @protected - * @static - */ -PIXI.CANVAS_RENDERER = 1; - -/** - * Version of pixi that is loaded. - * @property {String} VERSION - * @static - */ -PIXI.VERSION = "v2.2.9"; - -// used to create uids for various pixi objects. -PIXI._UID = 0; - -if (typeof(Float32Array) != 'undefined') -{ - PIXI.Float32Array = Float32Array; - PIXI.Uint16Array = Uint16Array; - - // Uint32Array and ArrayBuffer only used by WebGL renderer - // We can suppose that if WebGL is supported then typed arrays are supported too - // as they predate WebGL support for all browsers: - // see typed arrays support: http://caniuse.com/#search=TypedArrays - // see WebGL support: http://caniuse.com/#search=WebGL - PIXI.Uint32Array = Uint32Array; - PIXI.ArrayBuffer = ArrayBuffer; -} -else -{ - PIXI.Float32Array = Array; - PIXI.Uint16Array = Array; -} - -/** - * @property {Number} PI_2 - * @static - */ -PIXI.PI_2 = Math.PI * 2; - -/** - * @property {Number} RAD_TO_DEG - * @static - */ -PIXI.RAD_TO_DEG = 180 / Math.PI; - -/** - * @property {Number} DEG_TO_RAD - * @static - */ -PIXI.DEG_TO_RAD = Math.PI / 180; - -/** - * @property {String} RETINA_PREFIX - * @protected - * @static - */ -PIXI.RETINA_PREFIX = "@2x"; - -/** - * The default render options if none are supplied to - * {{#crossLink "WebGLRenderer"}}{{/crossLink}} or {{#crossLink "CanvasRenderer"}}{{/crossLink}}. - * - * @property {Object} defaultRenderOptions - * @property {Object} defaultRenderOptions.view=null - * @property {Boolean} defaultRenderOptions.transparent=false - * @property {Boolean} defaultRenderOptions.antialias=false - * @property {Boolean} defaultRenderOptions.preserveDrawingBuffer=false - * @property {Number} defaultRenderOptions.resolution=1 - * @property {Boolean} defaultRenderOptions.clearBeforeRender=true - * @property {Boolean} defaultRenderOptions.autoResize=false - * @static -PIXI.defaultRenderOptions = { - view: null, - transparent: false, - antialias: false, - preserveDrawingBuffer: false, - resolution: 1, - clearBeforeRender: true, - autoResize: false -}; - */ - -/** -* @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. 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 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 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 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 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 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 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; - - /** - * 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) - * - * @property hitArea - * @type Rectangle|Circle|Ellipse|Polygon - */ - this.hitArea = null; - - /** - * 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; - - /** - * 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; - - /** - * The stage that this DisplayObject is connected to. - * - * @property {PIXI.Stage} stage - * @default - * @readOnly - */ - this.stage = null; - - /** - * 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; - - /** - * 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 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 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, 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; - - /** - * The rectangular area used by filters when rendering a shader for this DisplayObject. - * - * @property {PIXI.Rectangle} filterArea - * @type Rectangle - * @default - */ - this.filterArea = null; - - /** - * @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); - - /** - * @property {PIXI.Rectangle} _currentBounds - The most recently calculated bounds of this object. - * @private - */ - this._currentBounds = null; - - /** - * @property {PIXI.Rectangle} _mask - The cached mask of this object. - * @private - */ - this._mask = null; - - /** - * @property {boolean} _cacheAsBitmap - Internal cache as bitmap flag. - * @private - */ - this._cacheAsBitmap = false; - - /** - * @property {boolean} _cacheIsDirty - Internal dirty cache flag. - * @private - */ - this._cacheIsDirty = false; - -}; - -PIXI.DisplayObject.prototype.constructor = PIXI.DisplayObject; - -PIXI.DisplayObject.prototype = { - - /** - * 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) - { - var i = this.children.length; - - while (i--) - { - this.children[i].destroy(); - } - - this.children = []; - } - - this.hitArea = null; - this.parent = null; - this.stage = null; - this.worldTransform = null; - this.filterArea = null; - this.renderable = false; - - this._bounds = null; - this._currentBounds = null; - this._mask = null; - - this._destroyCachedSprite(); - - }, - - /* - * 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 (!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; - } - - this._cachedSprite.texture.destroy(true); - - this._cachedSprite = null; - - } - -}; - -// Alias for updateTransform. As used in DisplayObject container, etc. -PIXI.DisplayObject.prototype.displayObjectUpdateTransform = PIXI.DisplayObject.prototype.updateTransform; - -Object.defineProperties(PIXI.DisplayObject.prototype, { - - /** - * 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': { - - 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 () { - - 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; - - } - - } - -}); - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * 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. - * - * @class DisplayObjectContainer - * @extends DisplayObject - * @constructor - */ -PIXI.DisplayObjectContainer = function() -{ - PIXI.DisplayObject.call(this); - - /** - * [read-only] The array of children of this container. - * - * @property children - * @type Array(DisplayObject) - * @readOnly - */ - this.children = []; - - /** - * If `ignoreChildInput` is `false` it will allow this objects _children_ to be considered as valid for Input events. - * - * If this property is `true` then the children will _not_ be considered as valid for Input events. - * - * Note that this property isn't recursive: only immediate children are influenced, it doesn't scan further down. - * @property {boolean} ignoreChildInput - * @default - */ - this.ignoreChildInput = false; - -}; - -// constructor -PIXI.DisplayObjectContainer.prototype = Object.create( PIXI.DisplayObject.prototype ); -PIXI.DisplayObjectContainer.prototype.constructor = PIXI.DisplayObjectContainer; - -/** - * The width of the displayObjectContainer, setting this will actually modify the scale to achieve the value set - * - * @property width - * @type Number - */ -Object.defineProperty(PIXI.DisplayObjectContainer.prototype, 'width', { - - get: function() { - return this.scale.x * this.getLocalBounds().width; - }, - - set: function(value) { - - var width = this.getLocalBounds().width; - - if (width !== 0) - { - this.scale.x = value / width; - } - else - { - this.scale.x = 1; - } - - this._width = value; - } -}); - -/** - * The height of the displayObjectContainer, setting this will actually modify the scale to achieve the value set - * - * @property height - * @type Number - */ -Object.defineProperty(PIXI.DisplayObjectContainer.prototype, 'height', { - - get: function() { - return this.scale.y * this.getLocalBounds().height; - }, - - set: function(value) { - - var height = this.getLocalBounds().height; - - if (height !== 0) - { - this.scale.y = value / height; - } - else - { - this.scale.y = 1; - } - - this._height = value; - } - -}); - -/** - * Adds a child to the container. - * - * @method addChild - * @param child {DisplayObject} The DisplayObject to add to the container - * @return {DisplayObject} The child that was added. - */ -PIXI.DisplayObjectContainer.prototype.addChild = function(child) -{ - return this.addChildAt(child, this.children.length); -}; - -/** - * Adds a child to the container at a specified index. If the index is out of bounds an error will be thrown - * - * @method addChildAt - * @param child {DisplayObject} The child to add - * @param index {Number} The index to place the child in - * @return {DisplayObject} The child that was added. - */ -PIXI.DisplayObjectContainer.prototype.addChildAt = function(child, index) -{ - if(index >= 0 && index <= this.children.length) - { - if(child.parent) - { - child.parent.removeChild(child); - } - - child.parent = this; - - this.children.splice(index, 0, child); - - if(this.stage)child.setStageReference(this.stage); - - return child; - } - else - { - throw new Error(child + 'addChildAt: The index '+ index +' supplied is out of bounds ' + this.children.length); - } -}; - -/** - * Swaps the position of 2 Display Objects within this container. - * - * @method swapChildren - * @param child {DisplayObject} - * @param child2 {DisplayObject} - */ -PIXI.DisplayObjectContainer.prototype.swapChildren = function(child, child2) -{ - if(child === child2) { - return; - } - - var index1 = this.getChildIndex(child); - var index2 = this.getChildIndex(child2); - - if(index1 < 0 || index2 < 0) { - throw new Error('swapChildren: Both the supplied DisplayObjects must be a child of the caller.'); - } - - this.children[index1] = child2; - this.children[index2] = child; - -}; - -/** - * Returns the index position of a child DisplayObject instance - * - * @method getChildIndex - * @param child {DisplayObject} The DisplayObject instance to identify - * @return {Number} The index position of the child display object to identify - */ -PIXI.DisplayObjectContainer.prototype.getChildIndex = function(child) -{ - var index = this.children.indexOf(child); - if (index === -1) - { - throw new Error('The supplied DisplayObject must be a child of the caller'); - } - return index; -}; - -/** - * Changes the position of an existing child in the display object container - * - * @method setChildIndex - * @param child {DisplayObject} The child DisplayObject instance for which you want to change the index number - * @param index {Number} The resulting index number for the child display object - */ -PIXI.DisplayObjectContainer.prototype.setChildIndex = function(child, index) -{ - if (index < 0 || index >= this.children.length) - { - throw new Error('The supplied index is out of bounds'); - } - var currentIndex = this.getChildIndex(child); - this.children.splice(currentIndex, 1); //remove from old position - this.children.splice(index, 0, child); //add at new position -}; - -/** - * Returns the child at the specified index - * - * @method getChildAt - * @param index {Number} The index to get the child from - * @return {DisplayObject} The child at the given index, if any. - */ -PIXI.DisplayObjectContainer.prototype.getChildAt = function(index) -{ - if (index < 0 || index >= this.children.length) - { - throw new Error('getChildAt: Supplied index '+ index +' does not exist in the child list, or the supplied DisplayObject must be a child of the caller'); - } - return this.children[index]; - -}; - -/** - * Removes a child from the container. - * - * @method removeChild - * @param child {DisplayObject} The DisplayObject to remove - * @return {DisplayObject} The child that was removed. - */ -PIXI.DisplayObjectContainer.prototype.removeChild = function(child) -{ - var index = this.children.indexOf( child ); - if(index === -1)return; - - return this.removeChildAt( index ); -}; - -/** - * Removes a child from the specified index position. - * - * @method removeChildAt - * @param index {Number} The index to get the child from - * @return {DisplayObject} The child that was removed. - */ -PIXI.DisplayObjectContainer.prototype.removeChildAt = function(index) -{ - var child = this.getChildAt( index ); - if(this.stage) - child.removeStageReference(); - - child.parent = undefined; - this.children.splice( index, 1 ); - return child; -}; - -/** -* Removes all children from this container that are within the begin and end indexes. -* -* @method removeChildren -* @param beginIndex {Number} The beginning position. Default value is 0. -* @param endIndex {Number} The ending position. Default value is size of the container. -*/ -PIXI.DisplayObjectContainer.prototype.removeChildren = function(beginIndex, endIndex) -{ - var begin = beginIndex || 0; - var end = typeof endIndex === 'number' ? endIndex : this.children.length; - var range = end - begin; - - if (range > 0 && range <= end) - { - var removed = this.children.splice(begin, range); - for (var i = 0; i < removed.length; i++) { - var child = removed[i]; - if(this.stage) - child.removeStageReference(); - child.parent = undefined; - } - return removed; - } - else if (range === 0 && this.children.length === 0) - { - return []; - } - else - { - throw new Error( 'removeChildren: Range Error, numeric values are outside the acceptable range' ); - } -}; - -/* - * Updates the transform on all children of this container for rendering - * - * @method updateTransform - * @private - */ -PIXI.DisplayObjectContainer.prototype.updateTransform = function() -{ - if (!this.visible) - { - return; - } - - this.displayObjectUpdateTransform(); - - if (this._cacheAsBitmap) - { - return; - } - - for (var i = 0; i < this.children.length; i++) - { - this.children[i].updateTransform(); - } -}; - -// performance increase to avoid using call.. (10x faster) -PIXI.DisplayObjectContainer.prototype.displayObjectContainerUpdateTransform = PIXI.DisplayObjectContainer.prototype.updateTransform; - -/** - * Retrieves the bounds of the displayObjectContainer as a rectangle. The bounds calculation takes all visible children into consideration. - * - * @method getBounds - * @return {Rectangle} The rectangular bounding area - */ -PIXI.DisplayObjectContainer.prototype.getBounds = function() -{ - if (this.children.length === 0) - { - return PIXI.EmptyRectangle; - } - - this.updateTransform(); - - var minX = Infinity; - var minY = Infinity; - - var maxX = -Infinity; - var maxY = -Infinity; - - var childBounds; - var childMaxX; - var childMaxY; - - var childVisible = false; - - for (var i = 0; i < this.children.length; i++) - { - var child = this.children[i]; - - if (!child.visible) - { - continue; - } - - childVisible = true; - - childBounds = this.children[i].getBounds(); - - minX = minX < childBounds.x ? minX : childBounds.x; - minY = minY < childBounds.y ? minY : childBounds.y; - - childMaxX = childBounds.width + childBounds.x; - childMaxY = childBounds.height + childBounds.y; - - maxX = maxX > childMaxX ? maxX : childMaxX; - maxY = maxY > childMaxY ? maxY : childMaxY; - } - - if (!childVisible) - { - return PIXI.EmptyRectangle; - } - - var bounds = this._bounds; - - bounds.x = minX; - bounds.y = minY; - bounds.width = maxX - minX; - bounds.height = maxY - minY; - - return bounds; -}; - -/** - * Retrieves the non-global local bounds of the displayObjectContainer as a rectangle. The calculation takes all visible children into consideration. - * - * @method getLocalBounds - * @return {Rectangle} The rectangular bounding area - */ -PIXI.DisplayObjectContainer.prototype.getLocalBounds = function() -{ - var matrixCache = this.worldTransform; - - this.worldTransform = PIXI.identityMatrix; - - for (var i = 0; i < this.children.length; i++) - { - this.children[i].updateTransform(); - } - - var bounds = this.getBounds(); - - this.worldTransform = matrixCache; - - for (i = 0; i < this.children.length; i++) - { - this.children[i].updateTransform(); - } - - return bounds; -}; - -/** - * Sets the containers Stage reference. This is the Stage that this object, and all of its children, is connected to. - * - * @method setStageReference - * @param stage {Stage} the stage that the container will have as its current stage reference - */ -PIXI.DisplayObjectContainer.prototype.setStageReference = function(stage) -{ - this.stage = stage; - - for (var i=0; i < this.children.length; i++) - { - this.children[i].setStageReference(stage) - } -}; - -/** - * Removes the current stage reference from the container and all of its children. - * - * @method removeStageReference - */ -PIXI.DisplayObjectContainer.prototype.removeStageReference = function() -{ - for (var i = 0; i < this.children.length; i++) - { - this.children[i].removeStageReference(); - } - - this.stage = null; -}; - -/** -* Renders the object using the WebGL renderer -* -* @method _renderWebGL -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObjectContainer.prototype._renderWebGL = function(renderSession) -{ - if (!this.visible || this.alpha <= 0) return; - - if (this._cacheAsBitmap) - { - this._renderCachedSprite(renderSession); - return; - } - - var i; - - if (this._mask || this._filters) - { - // push filter first as we need to ensure the stencil buffer is correct for any masking - if (this._filters) - { - renderSession.spriteBatch.flush(); - renderSession.filterManager.pushFilter(this._filterBlock); - } - - if (this._mask) - { - renderSession.spriteBatch.stop(); - renderSession.maskManager.pushMask(this.mask, renderSession); - renderSession.spriteBatch.start(); - } - - // simple render children! - for (i = 0; i < this.children.length; i++) - { - this.children[i]._renderWebGL(renderSession); - } - - renderSession.spriteBatch.stop(); - - if (this._mask) renderSession.maskManager.popMask(this._mask, renderSession); - if (this._filters) renderSession.filterManager.popFilter(); - - renderSession.spriteBatch.start(); - } - else - { - // simple render children! - for (i = 0; i < this.children.length; i++) - { - this.children[i]._renderWebGL(renderSession); - } - } -}; - -/** -* Renders the object using the Canvas renderer -* -* @method _renderCanvas -* @param renderSession {RenderSession} -* @private -*/ -PIXI.DisplayObjectContainer.prototype._renderCanvas = function(renderSession) -{ - if (this.visible === false || this.alpha === 0) return; - - if (this._cacheAsBitmap) - { - this._renderCachedSprite(renderSession); - return; - } - - if (this._mask) - { - renderSession.maskManager.pushMask(this._mask, renderSession); - } - - for (var i = 0; i < this.children.length; i++) - { - this.children[i]._renderCanvas(renderSession); - } - - if (this._mask) - { - renderSession.maskManager.popMask(renderSession); - } - -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * The Sprite object is the base for all textured objects that are rendered to the screen - * - * @class Sprite - * @extends DisplayObjectContainer - * @constructor - * @param texture {Texture} The texture for this sprite - * - * 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 - */ -PIXI.Sprite = function(texture) -{ - PIXI.DisplayObjectContainer.call(this); - - /** - * The anchor sets the origin point of the texture. - * The default is 0,0 this means the texture's origin is the top left - * 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 - * - * @property anchor - * @type Point - */ - this.anchor = new PIXI.Point(); - - /** - * The texture that the sprite is using - * - * @property texture - * @type Texture - */ - this.texture = texture || PIXI.Texture.emptyTexture; - - /** - * The width of the sprite (this is initially set by the texture) - * - * @property _width - * @type Number - * @private - */ - this._width = 0; - - /** - * The height of the sprite (this is initially set by the texture) - * - * @property _height - * @type Number - * @private - */ - this._height = 0; - - /** - * The tint applied to the sprite. This is a hex value. A value of 0xFFFFFF will remove any tint effect. - * - * @property tint - * @type Number - * @default 0xFFFFFF - */ - this.tint = 0xFFFFFF; - - /** - * The tint applied to the sprite. This is a hex value. A value of 0xFFFFFF will remove any tint effect. - * - * @property cachedTint - * @private - * @type Number - * @default -1 - */ - this.cachedTint = -1; - - /** - * A canvas that contains the tinted version of the Sprite (in Canvas mode, WebGL doesn't populate this) - * - * @property tintedTexture - * @type Canvas - * @default null - */ - this.tintedTexture = null; - - /** - * The blend mode to be applied to the sprite. Set to PIXI.blendModes.NORMAL to remove any blend mode. - * - * Warning: You cannot have a blend mode and a filter active on the same Sprite. Doing so will render the sprite invisible. - * - * @property blendMode - * @type Number - * @default PIXI.blendModes.NORMAL; - */ - this.blendMode = PIXI.blendModes.NORMAL; - - /** - * The shader that will be used to render the texture to the stage. Set to null to remove a current shader. - * - * @property shader - * @type AbstractFilter - * @default null - */ - this.shader = null; - - /** - * Controls if this Sprite is processed by the core Phaser game loops and Group loops. - * - * @property exists - * @type Boolean - * @default true - */ - this.exists = true; - - if (this.texture.baseTexture.hasLoaded) - { - this.onTextureUpdate(); - } - - this.renderable = true; - -}; - -// constructor -PIXI.Sprite.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); -PIXI.Sprite.prototype.constructor = PIXI.Sprite; - -/** - * The width of the sprite, setting this will actually modify the scale to achieve the value set - * - * @property width - * @type Number - */ -Object.defineProperty(PIXI.Sprite.prototype, 'width', { - - get: function() { - return this.scale.x * this.texture.frame.width; - }, - - set: function(value) { - this.scale.x = value / this.texture.frame.width; - this._width = value; - } - -}); - -/** - * The height of the sprite, setting this will actually modify the scale to achieve the value set - * - * @property height - * @type Number - */ -Object.defineProperty(PIXI.Sprite.prototype, 'height', { - - get: function() { - return this.scale.y * this.texture.frame.height; - }, - - set: function(value) { - this.scale.y = value / this.texture.frame.height; - this._height = value; - } - -}); - -/** - * Sets the texture of the sprite. Be warned that this doesn't remove or destroy the previous - * texture this Sprite was using. - * - * @method setTexture - * @param texture {Texture} The PIXI texture that is displayed by the sprite - * @param [destroy=false] {boolean} Call Texture.destroy on the current texture before replacing it with the new one? - */ -PIXI.Sprite.prototype.setTexture = function(texture, destroyBase) -{ - if (destroyBase !== undefined) - { - this.texture.baseTexture.destroy(); - } - - // Over-ridden by loadTexture as needed - this.texture.baseTexture.skipRender = false; - this.texture = texture; - this.texture.valid = true; - this.cachedTint = -1; -}; - -/** - * When the texture is updated, this event will fire to update the scale and frame - * - * @method onTextureUpdate - * @param event - * @private - */ -PIXI.Sprite.prototype.onTextureUpdate = function() -{ - // so if _width is 0 then width was not set.. - if (this._width) this.scale.x = this._width / this.texture.frame.width; - if (this._height) this.scale.y = this._height / this.texture.frame.height; -}; - -/** -* Returns the bounds of the Sprite as a rectangle. -* The bounds calculation takes the worldTransform into account. -* -* It is important to note that the transform is not updated when you call this method. -* So if this Sprite is the child of a Display Object which has had its transform -* updated since the last render pass, those changes will not yet have been applied -* to this Sprites worldTransform. If you need to ensure that all parent transforms -* are factored into this getBounds operation then you should call `updateTransform` -* on the root most object in this Sprites display list first. -* -* @method getBounds -* @param matrix {Matrix} the transformation matrix of the sprite -* @return {Rectangle} the framing rectangle -*/ -PIXI.Sprite.prototype.getBounds = function(matrix) -{ - var width = this.texture.frame.width; - var height = this.texture.frame.height; - - var w0 = width * (1-this.anchor.x); - var w1 = width * -this.anchor.x; - - var h0 = height * (1-this.anchor.y); - var h1 = height * -this.anchor.y; - - var worldTransform = matrix || this.worldTransform; - - var a = worldTransform.a; - var b = worldTransform.b; - var c = worldTransform.c; - var d = worldTransform.d; - var tx = worldTransform.tx; - var ty = worldTransform.ty; - - var maxX = -Infinity; - var maxY = -Infinity; - - var minX = Infinity; - var minY = Infinity; - - if (b === 0 && c === 0) - { - // scale may be negative! - if (a < 0) - { - a *= -1; - var temp = w0; - w0 = -w1; - w1 = -temp; - } - - if (d < 0) - { - d *= -1; - var temp = h0; - h0 = -h1; - h1 = -temp; - } - - // this means there is no rotation going on right? RIGHT? - // if thats the case then we can avoid checking the bound values! yay - minX = a * w1 + tx; - maxX = a * w0 + tx; - minY = d * h1 + ty; - maxY = d * h0 + ty; - } - else - { - var x1 = a * w1 + c * h1 + tx; - var y1 = d * h1 + b * w1 + ty; - - var x2 = a * w0 + c * h1 + tx; - var y2 = d * h1 + b * w0 + ty; - - var x3 = a * w0 + c * h0 + tx; - var y3 = d * h0 + b * w0 + ty; - - var x4 = a * w1 + c * h0 + tx; - var y4 = d * h0 + b * w1 + ty; - - minX = x1 < minX ? x1 : minX; - minX = x2 < minX ? x2 : minX; - minX = x3 < minX ? x3 : minX; - minX = x4 < minX ? x4 : minX; - - minY = y1 < minY ? y1 : minY; - minY = y2 < minY ? y2 : minY; - minY = y3 < minY ? y3 : minY; - minY = y4 < minY ? y4 : minY; - - maxX = x1 > maxX ? x1 : maxX; - maxX = x2 > maxX ? x2 : maxX; - maxX = x3 > maxX ? x3 : maxX; - maxX = x4 > maxX ? x4 : maxX; - - maxY = y1 > maxY ? y1 : maxY; - maxY = y2 > maxY ? y2 : maxY; - maxY = y3 > maxY ? y3 : maxY; - maxY = y4 > maxY ? y4 : maxY; - } - - var bounds = this._bounds; - - bounds.x = minX; - bounds.width = maxX - minX; - - bounds.y = minY; - bounds.height = maxY - minY; - - // store a reference so that if this function gets called again in the render cycle we do not have to recalculate - this._currentBounds = bounds; - - return bounds; -}; - -/** -* Renders the object using the WebGL renderer -* -* @method _renderWebGL -* @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. -* @private -*/ -PIXI.Sprite.prototype._renderWebGL = function(renderSession, matrix) -{ - // if the sprite is not visible or the alpha is 0 then no need to render this element - if (!this.visible || this.alpha <= 0 || !this.renderable) return; - - // They provided an alternative rendering matrix, so use it - var wt = this.worldTransform; - - if (matrix) - { - wt = matrix; - } - - // A quick check to see if this element has a mask or a filter. - if (this._mask || this._filters) - { - var spriteBatch = renderSession.spriteBatch; - - // push filter first as we need to ensure the stencil buffer is correct for any masking - if (this._filters) - { - spriteBatch.flush(); - renderSession.filterManager.pushFilter(this._filterBlock); - } - - if (this._mask) - { - spriteBatch.stop(); - renderSession.maskManager.pushMask(this.mask, renderSession); - spriteBatch.start(); - } - - // add this sprite to the batch - spriteBatch.render(this); - - // now loop through the children and make sure they get rendered - for (var i = 0; i < this.children.length; i++) - { - this.children[i]._renderWebGL(renderSession); - } - - // time to stop the sprite batch as either a mask element or a filter draw will happen next - spriteBatch.stop(); - - if (this._mask) renderSession.maskManager.popMask(this._mask, renderSession); - if (this._filters) renderSession.filterManager.popFilter(); - - spriteBatch.start(); - } - else - { - renderSession.spriteBatch.render(this); - - // Render children! - for (var i = 0; i < this.children.length; i++) - { - this.children[i]._renderWebGL(renderSession, wt); - } - - } -}; - -/** -* Renders the object using the Canvas renderer -* -* @method _renderCanvas -* @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. -* @private -*/ -PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix) -{ - // If the sprite is not visible or the alpha is 0 then no need to render this element - if (!this.visible || this.alpha === 0 || !this.renderable || this.texture.crop.width <= 0 || this.texture.crop.height <= 0) - { - return; - } - - var wt = this.worldTransform; - - // If they provided an alternative rendering matrix then use it - if (matrix) - { - wt = matrix; - } - - if (this.blendMode !== renderSession.currentBlendMode) - { - renderSession.currentBlendMode = this.blendMode; - renderSession.context.globalCompositeOperation = PIXI.blendModesCanvas[renderSession.currentBlendMode]; - } - - if (this._mask) - { - renderSession.maskManager.pushMask(this._mask, renderSession); - } - - // Ignore null sources - if (this.texture.valid) - { - var resolution = this.texture.baseTexture.resolution / renderSession.resolution; - - renderSession.context.globalAlpha = this.worldAlpha; - - // If smoothingEnabled is supported and we need to change the smoothing property for this texture - if (renderSession.smoothProperty && renderSession.scaleMode !== this.texture.baseTexture.scaleMode) - { - renderSession.scaleMode = this.texture.baseTexture.scaleMode; - renderSession.context[renderSession.smoothProperty] = (renderSession.scaleMode === PIXI.scaleModes.LINEAR); - } - - // If the texture is trimmed we offset by the trim x/y, otherwise we use the frame dimensions - var dx = (this.texture.trim) ? this.texture.trim.x - this.anchor.x * this.texture.trim.width : this.anchor.x * -this.texture.frame.width; - var dy = (this.texture.trim) ? this.texture.trim.y - this.anchor.y * this.texture.trim.height : this.anchor.y * -this.texture.frame.height; - - var tx = (wt.tx * renderSession.resolution) + renderSession.shakeX; - var ty = (wt.ty * renderSession.resolution) + renderSession.shakeY; - - // Allow for pixel rounding - if (renderSession.roundPixels) - { - renderSession.context.setTransform(wt.a, wt.b, wt.c, wt.d, tx | 0, ty | 0); - dx |= 0; - dy |= 0; - } - else - { - renderSession.context.setTransform(wt.a, wt.b, wt.c, wt.d, tx, ty); - } - - var cw = this.texture.crop.width; - var ch = this.texture.crop.height; - - dx /= resolution; - dy /= resolution; - - if (this.tint !== 0xFFFFFF) - { - if (this.texture.requiresReTint || this.cachedTint !== this.tint) - { - this.tintedTexture = PIXI.CanvasTinter.getTintedTexture(this, this.tint); - - this.cachedTint = this.tint; - this.texture.requiresReTint = false; - } - - renderSession.context.drawImage(this.tintedTexture, 0, 0, cw, ch, dx, dy, cw / resolution, ch / resolution); - } - else - { - var cx = this.texture.crop.x; - var cy = this.texture.crop.y; - renderSession.context.drawImage(this.texture.baseTexture.source, cx, cy, cw, ch, dx, dy, cw / resolution, ch / resolution); - } - } - - for (var i = 0; i < this.children.length; i++) - { - this.children[i]._renderCanvas(renderSession); - } - - if (this._mask) - { - renderSession.maskManager.popMask(renderSession); - } - -}; - -/** - * @author Mat Groves http://matgroves.com/ - */ - -/** - * The SpriteBatch class is a really fast version of the DisplayObjectContainer - * built solely for speed, so use when you need a lot of sprites or particles. - * And it's extremely easy to use : - - var container = new PIXI.SpriteBatch(); - - stage.addChild(container); - - for(var i = 0; i < 100; i++) - { - var sprite = new PIXI.Sprite.fromImage("myImage.png"); - container.addChild(sprite); - } - * And here you have a hundred sprites that will be renderer at the speed of light - * - * @class SpriteBatch - * @constructor - * @param texture {Texture} - */ -PIXI.SpriteBatch = function(texture) -{ - PIXI.DisplayObjectContainer.call( this); - - this.textureThing = texture; - - this.ready = false; -}; - -PIXI.SpriteBatch.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); -PIXI.SpriteBatch.prototype.constructor = PIXI.SpriteBatch; - -/* - * Initialises the spriteBatch - * - * @method initWebGL - * @param gl {WebGLContext} the current WebGL drawing context - */ -PIXI.SpriteBatch.prototype.initWebGL = function(gl) -{ - // TODO only one needed for the whole engine really? - this.fastSpriteBatch = new PIXI.WebGLFastSpriteBatch(gl); - - this.ready = true; -}; - -/* - * Updates the object transform for rendering - * - * @method updateTransform - * @private - */ -PIXI.SpriteBatch.prototype.updateTransform = function() -{ - // TODO don't need to! - this.displayObjectUpdateTransform(); - // PIXI.DisplayObjectContainer.prototype.updateTransform.call( this ); -}; - -/** -* Renders the object using the WebGL renderer -* -* @method _renderWebGL -* @param renderSession {RenderSession} -* @private -*/ -PIXI.SpriteBatch.prototype._renderWebGL = function(renderSession) -{ - if (!this.visible || this.alpha <= 0 || !this.children.length) return; - - if (!this.ready) - { - this.initWebGL(renderSession.gl); - } - - if (this.fastSpriteBatch.gl !== renderSession.gl) - { - this.fastSpriteBatch.setContext(renderSession.gl); - } - - renderSession.spriteBatch.stop(); - - renderSession.shaderManager.setShader(renderSession.shaderManager.fastShader); - - this.fastSpriteBatch.begin(this, renderSession); - this.fastSpriteBatch.render(this); - - renderSession.spriteBatch.start(); - -}; - -/** -* Renders the object using the Canvas renderer -* -* @method _renderCanvas -* @param renderSession {RenderSession} -* @private -*/ -PIXI.SpriteBatch.prototype._renderCanvas = function(renderSession) -{ - if (!this.visible || this.alpha <= 0 || !this.children.length) return; - - var context = renderSession.context; - - context.globalAlpha = this.worldAlpha; - - this.displayObjectUpdateTransform(); - - var transform = this.worldTransform; - - var isRotated = true; - - for (var i = 0; i < this.children.length; i++) - { - var child = this.children[i]; - - if (!child.visible) continue; - - var texture = child.texture; - var frame = texture.frame; - - context.globalAlpha = this.worldAlpha * child.alpha; - - if (child.rotation % (Math.PI * 2) === 0) - { - if (isRotated) - { - context.setTransform(transform.a, transform.b, transform.c, transform.d, transform.tx, transform.ty); - isRotated = false; - } - - // this is the fastest way to optimise! - if rotation is 0 then we can avoid any kind of setTransform call - context.drawImage(texture.baseTexture.source, - frame.x, - frame.y, - frame.width, - frame.height, - ((child.anchor.x) * (-frame.width * child.scale.x) + child.position.x + 0.5 + renderSession.shakeX) | 0, - ((child.anchor.y) * (-frame.height * child.scale.y) + child.position.y + 0.5 + renderSession.shakeY) | 0, - frame.width * child.scale.x, - frame.height * child.scale.y); - } - else - { - if (!isRotated) isRotated = true; - - child.displayObjectUpdateTransform(); - - var childTransform = child.worldTransform; - var tx = (childTransform.tx * renderSession.resolution) + renderSession.shakeX; - var ty = (childTransform.ty * renderSession.resolution) + renderSession.shakeY; - - // allow for trimming - - if (renderSession.roundPixels) - { - context.setTransform(childTransform.a, childTransform.b, childTransform.c, childTransform.d, tx | 0, ty | 0); - } - else - { - context.setTransform(childTransform.a, childTransform.b, childTransform.c, childTransform.d, tx, ty); - } - - context.drawImage(texture.baseTexture.source, - frame.x, - frame.y, - frame.width, - frame.height, - ((child.anchor.x) * (-frame.width) + 0.5) | 0, - ((child.anchor.y) * (-frame.height) + 0.5) | 0, - frame.width, - frame.height); - } - } - -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * Converts a hex color number to an [R, G, B] array - * - * @method hex2rgb - * @param hex {Number} - */ -PIXI.hex2rgb = function(hex) { - return [(hex >> 16 & 0xFF) / 255, ( hex >> 8 & 0xFF) / 255, (hex & 0xFF)/ 255]; -}; - -/** - * Converts a color as an [R, G, B] array to a hex number - * - * @method rgb2hex - * @param rgb {Array} - */ -PIXI.rgb2hex = function(rgb) { - return ((rgb[0]*255 << 16) + (rgb[1]*255 << 8) + rgb[2]*255); -}; - -/** - * Checks whether the Canvas BlendModes are supported by the current browser for drawImage - * - * @method canUseNewCanvasBlendModes - * @return {Boolean} whether they are supported - */ -PIXI.canUseNewCanvasBlendModes = function() -{ - if (document === undefined) return false; - - var pngHead = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/'; - var pngEnd = 'AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg=='; - - var magenta = new Image(); - magenta.src = pngHead + 'AP804Oa6' + pngEnd; - - var yellow = new Image(); - yellow.src = pngHead + '/wCKxvRF' + pngEnd; - - var canvas = PIXI.CanvasPool.create(this, 6, 1); - var context = canvas.getContext('2d'); - context.globalCompositeOperation = 'multiply'; - context.drawImage(magenta, 0, 0); - context.drawImage(yellow, 2, 0); - - if (!context.getImageData(2,0,1,1)) - { - return false; - } - - var data = context.getImageData(2,0,1,1).data; - - PIXI.CanvasPool.remove(this); - - return (data[0] === 255 && data[1] === 0 && data[2] === 0); - -}; - -/** - * Given a number, this function returns the closest number that is a power of two - * this function is taken from Starling Framework as its pretty neat ;) - * - * @method getNextPowerOfTwo - * @param number {Number} - * @return {Number} the closest number that is a power of two - */ -PIXI.getNextPowerOfTwo = function(number) -{ - if (number > 0 && (number & (number - 1)) === 0) // see: http://goo.gl/D9kPj - return number; - else - { - var result = 1; - while (result < number) result <<= 1; - return result; - } -}; - -/** - * checks if the given width and height make a power of two texture - * @method isPowerOfTwo - * @param width {Number} - * @param height {Number} - * @return {Boolean} - */ -PIXI.isPowerOfTwo = function(width, height) -{ - return (width > 0 && (width & (width - 1)) === 0 && height > 0 && (height & (height - 1)) === 0); - -}; - -/** -* @author Richard Davey -* @copyright 2016 Photon Storm Ltd. -* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} -*/ - -/** -* The CanvasPool is a global static object that allows Pixi and Phaser to pool canvas DOM elements. -* -* @class CanvasPool -* @static -*/ -PIXI.CanvasPool = { - - /** - * Creates a new Canvas DOM element, or pulls one from the pool if free. - * - * @method create - * @static - * @param parent {any} The parent of the canvas element. - * @param width {number} The width of the canvas element. - * @param height {number} The height of the canvas element. - * @return {HTMLCanvasElement} The canvas element. - */ - create: function (parent, width, height) { - - var idx = PIXI.CanvasPool.getFirst(); - var canvas; - - if (idx === -1) - { - var container = { - parent: parent, - canvas: document.createElement('canvas') - } - - PIXI.CanvasPool.pool.push(container); - - canvas = container.canvas; - } - else - { - PIXI.CanvasPool.pool[idx].parent = parent; - - canvas = PIXI.CanvasPool.pool[idx].canvas; - } - - if (width !== undefined) - { - canvas.width = width; - canvas.height = height; - } - - return canvas; - - }, - - /** - * Gets the first free canvas index from the pool. - * - * @method getFirst - * @static - * @return {number} - */ - getFirst: function () { - - var pool = PIXI.CanvasPool.pool; - - for (var i = 0; i < pool.length; i++) - { - if (!pool[i].parent) - { - return i; - } - } - - return -1; - - }, - - /** - * Removes the parent from a canvas element from the pool, freeing it up for re-use. - * - * @method remove - * @param parent {any} The parent of the canvas element. - * @static - */ - remove: function (parent) { - - var pool = PIXI.CanvasPool.pool; - - for (var i = 0; i < pool.length; i++) - { - if (pool[i].parent === parent) - { - pool[i].parent = null; - pool[i].canvas.width = 1; - pool[i].canvas.height = 1; - } - } - - }, - - /** - * Removes the parent from a canvas element from the pool, freeing it up for re-use. - * - * @method removeByCanvas - * @param canvas {HTMLCanvasElement} The canvas element to remove - * @static - */ - removeByCanvas: function (canvas) { - - var pool = PIXI.CanvasPool.pool; - - for (var i = 0; i < pool.length; i++) - { - if (pool[i].canvas === canvas) - { - pool[i].parent = null; - pool[i].canvas.width = 1; - pool[i].canvas.height = 1; - } - } - - }, - - /** - * Gets the total number of used canvas elements in the pool. - * - * @method getTotal - * @static - * @return {number} The number of in-use (parented) canvas elements in the pool. - */ - getTotal: function () { - - var pool = PIXI.CanvasPool.pool; - var c = 0; - - for (var i = 0; i < pool.length; i++) - { - if (pool[i].parent) - { - c++; - } - } - - return c; - - }, - - /** - * Gets the total number of free canvas elements in the pool. - * - * @method getFree - * @static - * @return {number} The number of free (un-parented) canvas elements in the pool. - */ - getFree: function () { - - var pool = PIXI.CanvasPool.pool; - var c = 0; - - for (var i = 0; i < pool.length; i++) - { - if (!pool[i].parent) - { - c++; - } - } - - return c; - - } - -}; - -/** - * The pool into which the canvas dom elements are placed. - * - * @property pool - * @type Array - * @static - */ -PIXI.CanvasPool.pool = []; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @method initDefaultShaders -* @static -* @private -*/ -PIXI.initDefaultShaders = function() -{ -}; - -/** -* @method CompileVertexShader -* @static -* @param gl {WebGLContext} the current WebGL drawing context -* @param shaderSrc {Array} -* @return {Any} -*/ -PIXI.CompileVertexShader = function(gl, shaderSrc) -{ - return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); -}; - -/** -* @method CompileFragmentShader -* @static -* @param gl {WebGLContext} the current WebGL drawing context -* @param shaderSrc {Array} -* @return {Any} -*/ -PIXI.CompileFragmentShader = function(gl, shaderSrc) -{ - return PIXI._CompileShader(gl, shaderSrc, gl.FRAGMENT_SHADER); -}; - -/** -* @method _CompileShader -* @static -* @private -* @param gl {WebGLContext} the current WebGL drawing context -* @param shaderSrc {Array} -* @param shaderType {Number} -* @return {Any} -*/ -PIXI._CompileShader = function(gl, shaderSrc, shaderType) -{ - var src = shaderSrc; - - if (Array.isArray(shaderSrc)) - { - src = shaderSrc.join("\n"); - } - - var shader = gl.createShader(shaderType); - gl.shaderSource(shader, src); - gl.compileShader(shader); - - if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) - { - window.console.log(gl.getShaderInfoLog(shader)); - return null; - } - - return shader; -}; - -/** -* @method compileProgram -* @static -* @param gl {WebGLContext} the current WebGL drawing context -* @param vertexSrc {Array} -* @param fragmentSrc {Array} -* @return {Any} -*/ -PIXI.compileProgram = function(gl, vertexSrc, fragmentSrc) -{ - var fragmentShader = PIXI.CompileFragmentShader(gl, fragmentSrc); - var vertexShader = PIXI.CompileVertexShader(gl, vertexSrc); - - var shaderProgram = gl.createProgram(); - - gl.attachShader(shaderProgram, vertexShader); - gl.attachShader(shaderProgram, fragmentShader); - gl.linkProgram(shaderProgram); - - if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) - { - window.console.log(gl.getProgramInfoLog(shaderProgram)); - window.console.log("Could not initialise shaders"); - } - - return shaderProgram; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - * @author Richard Davey http://www.photonstorm.com @photonstorm - */ - -/** -* @class PixiShader -* @constructor -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.PixiShader = function(gl) -{ - /** - * @property _UID - * @type Number - * @private - */ - this._UID = PIXI._UID++; - - /** - * @property gl - * @type WebGLContext - */ - this.gl = gl; - - /** - * The WebGL program. - * @property program - * @type Any - */ - this.program = null; - - /** - * The fragment shader. - * @property fragmentSrc - * @type Array - */ - this.fragmentSrc = [ - 'precision lowp float;', - 'varying vec2 vTextureCoord;', - 'varying vec4 vColor;', - 'uniform sampler2D uSampler;', - 'void main(void) {', - ' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;', - '}' - ]; - - /** - * A local texture counter for multi-texture shaders. - * @property textureCount - * @type Number - */ - this.textureCount = 0; - - /** - * A local flag - * @property firstRun - * @type Boolean - * @private - */ - this.firstRun = true; - - /** - * A dirty flag - * @property dirty - * @type Boolean - */ - this.dirty = true; - - /** - * Uniform attributes cache. - * @property attributes - * @type Array - * @private - */ - this.attributes = []; - - this.init(); -}; - -PIXI.PixiShader.prototype.constructor = PIXI.PixiShader; - -/** -* Initialises the shader. -* -* @method init -*/ -PIXI.PixiShader.prototype.init = function() -{ - var gl = this.gl; - - var program = PIXI.compileProgram(gl, this.vertexSrc || PIXI.PixiShader.defaultVertexSrc, this.fragmentSrc); - - gl.useProgram(program); - - // get and store the uniforms for the shader - this.uSampler = gl.getUniformLocation(program, 'uSampler'); - this.projectionVector = gl.getUniformLocation(program, 'projectionVector'); - this.offsetVector = gl.getUniformLocation(program, 'offsetVector'); - this.dimensions = gl.getUniformLocation(program, 'dimensions'); - - // get and store the attributes - this.aVertexPosition = gl.getAttribLocation(program, 'aVertexPosition'); - this.aTextureCoord = gl.getAttribLocation(program, 'aTextureCoord'); - this.colorAttribute = gl.getAttribLocation(program, 'aColor'); - - // Begin worst hack eva // - - // WHY??? ONLY on my chrome pixel the line above returns -1 when using filters? - // maybe its something to do with the current state of the gl context. - // I'm convinced this is a bug in the chrome browser as there is NO reason why this should be returning -1 especially as it only manifests on my chrome pixel - // If theres any webGL people that know why could happen please help :) - if(this.colorAttribute === -1) - { - this.colorAttribute = 2; - } - - this.attributes = [this.aVertexPosition, this.aTextureCoord, this.colorAttribute]; - - // End worst hack eva // - - // add those custom shaders! - for (var key in this.uniforms) - { - // get the uniform locations.. - this.uniforms[key].uniformLocation = gl.getUniformLocation(program, key); - } - - this.initUniforms(); - - this.program = program; -}; - -/** -* Initialises the shader uniform values. -* -* 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 initUniforms -*/ -PIXI.PixiShader.prototype.initUniforms = function() -{ - this.textureCount = 1; - var gl = this.gl; - var uniform; - - for (var key in this.uniforms) - { - uniform = this.uniforms[key]; - - var type = uniform.type; - - if (type === 'sampler2D') - { - uniform._init = false; - - if (uniform.value !== null) - { - this.initSampler2D(uniform); - } - } - else if (type === 'mat2' || type === 'mat3' || type === 'mat4') - { - // These require special handling - uniform.glMatrix = true; - uniform.glValueLength = 1; - - if (type === 'mat2') - { - uniform.glFunc = gl.uniformMatrix2fv; - } - else if (type === 'mat3') - { - uniform.glFunc = gl.uniformMatrix3fv; - } - else if (type === 'mat4') - { - uniform.glFunc = gl.uniformMatrix4fv; - } - } - else - { - // GL function reference - uniform.glFunc = gl['uniform' + type]; - - if (type === '2f' || type === '2i') - { - uniform.glValueLength = 2; - } - else if (type === '3f' || type === '3i') - { - uniform.glValueLength = 3; - } - else if (type === '4f' || type === '4i') - { - uniform.glValueLength = 4; - } - else - { - uniform.glValueLength = 1; - } - } - } - -}; - -/** -* Initialises a Sampler2D uniform (which may only be available later on after initUniforms once the texture has loaded) -* -* @method initSampler2D -*/ -PIXI.PixiShader.prototype.initSampler2D = function(uniform) -{ - if (!uniform.value || !uniform.value.baseTexture || !uniform.value.baseTexture.hasLoaded) - { - return; - } - - var gl = this.gl; - - gl.activeTexture(gl['TEXTURE' + this.textureCount]); - gl.bindTexture(gl.TEXTURE_2D, uniform.value.baseTexture._glTextures[gl.id]); - - // Extended texture data - if (uniform.textureData) - { - var data = uniform.textureData; - - // GLTexture = mag linear, min linear_mipmap_linear, wrap repeat + gl.generateMipmap(gl.TEXTURE_2D); - // GLTextureLinear = mag/min linear, wrap clamp - // GLTextureNearestRepeat = mag/min NEAREST, wrap repeat - // GLTextureNearest = mag/min nearest, wrap clamp - // AudioTexture = whatever + luminance + width 512, height 2, border 0 - // KeyTexture = whatever + luminance + width 256, height 2, border 0 - - // magFilter can be: gl.LINEAR, gl.LINEAR_MIPMAP_LINEAR or gl.NEAREST - // wrapS/T can be: gl.CLAMP_TO_EDGE or gl.REPEAT - - var magFilter = (data.magFilter) ? data.magFilter : gl.LINEAR; - var minFilter = (data.minFilter) ? data.minFilter : gl.LINEAR; - var wrapS = (data.wrapS) ? data.wrapS : gl.CLAMP_TO_EDGE; - var wrapT = (data.wrapT) ? data.wrapT : gl.CLAMP_TO_EDGE; - var format = (data.luminance) ? gl.LUMINANCE : gl.RGBA; - - if (data.repeat) - { - wrapS = gl.REPEAT; - wrapT = gl.REPEAT; - } - - gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, !!data.flipY); - - if (data.width) - { - var width = (data.width) ? data.width : 512; - var height = (data.height) ? data.height : 2; - var border = (data.border) ? data.border : 0; - - // void texImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, ArrayBufferView? pixels); - gl.texImage2D(gl.TEXTURE_2D, 0, format, width, height, border, format, gl.UNSIGNED_BYTE, null); - } - else - { - // void texImage2D(GLenum target, GLint level, GLenum internalformat, GLenum format, GLenum type, ImageData? pixels); - gl.texImage2D(gl.TEXTURE_2D, 0, format, gl.RGBA, gl.UNSIGNED_BYTE, uniform.value.baseTexture.source); - } - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, magFilter); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, wrapS); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, wrapT); - } - - gl.uniform1i(uniform.uniformLocation, this.textureCount); - - uniform._init = true; - - this.textureCount++; - -}; - -/** -* Updates the shader uniform values. -* -* @method syncUniforms -*/ -PIXI.PixiShader.prototype.syncUniforms = function() -{ - this.textureCount = 1; - var uniform; - var gl = this.gl; - - // This would probably be faster in an array and it would guarantee key order - for (var key in this.uniforms) - { - uniform = this.uniforms[key]; - - if (uniform.glValueLength === 1) - { - if (uniform.glMatrix === true) - { - uniform.glFunc.call(gl, uniform.uniformLocation, uniform.transpose, uniform.value); - } - else - { - uniform.glFunc.call(gl, uniform.uniformLocation, uniform.value); - } - } - else if (uniform.glValueLength === 2) - { - uniform.glFunc.call(gl, uniform.uniformLocation, uniform.value.x, uniform.value.y); - } - else if (uniform.glValueLength === 3) - { - uniform.glFunc.call(gl, uniform.uniformLocation, uniform.value.x, uniform.value.y, uniform.value.z); - } - else if (uniform.glValueLength === 4) - { - uniform.glFunc.call(gl, uniform.uniformLocation, uniform.value.x, uniform.value.y, uniform.value.z, uniform.value.w); - } - else if (uniform.type === 'sampler2D') - { - if (uniform._init) - { - gl.activeTexture(gl['TEXTURE' + this.textureCount]); - - if(uniform.value.baseTexture._dirty[gl.id]) - { - PIXI.instances[gl.id].updateTexture(uniform.value.baseTexture); - } - else - { - // bind the current texture - gl.bindTexture(gl.TEXTURE_2D, uniform.value.baseTexture._glTextures[gl.id]); - } - - // gl.bindTexture(gl.TEXTURE_2D, uniform.value.baseTexture._glTextures[gl.id] || PIXI.createWebGLTexture( uniform.value.baseTexture, gl)); - gl.uniform1i(uniform.uniformLocation, this.textureCount); - this.textureCount++; - } - else - { - this.initSampler2D(uniform); - } - } - } - -}; - -/** -* Destroys the shader. -* -* @method destroy -*/ -PIXI.PixiShader.prototype.destroy = function() -{ - this.gl.deleteProgram( this.program ); - this.uniforms = null; - this.gl = null; - - this.attributes = null; -}; - -/** -* The Default Vertex shader source. -* -* @property defaultVertexSrc -* @type String -*/ -PIXI.PixiShader.defaultVertexSrc = [ - 'attribute vec2 aVertexPosition;', - 'attribute vec2 aTextureCoord;', - 'attribute vec4 aColor;', - - 'uniform vec2 projectionVector;', - 'uniform vec2 offsetVector;', - - 'varying vec2 vTextureCoord;', - 'varying vec4 vColor;', - - 'const vec2 center = vec2(-1.0, 1.0);', - - 'void main(void) {', - ' gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);', - ' vTextureCoord = aTextureCoord;', - ' vColor = vec4(aColor.rgb * aColor.a, aColor.a);', - '}' -]; -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class PixiFastShader -* @constructor -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.PixiFastShader = function(gl) -{ - /** - * @property _UID - * @type Number - * @private - */ - this._UID = PIXI._UID++; - - /** - * @property gl - * @type WebGLContext - */ - this.gl = gl; - - /** - * The WebGL program. - * @property program - * @type Any - */ - this.program = null; - - /** - * The fragment shader. - * @property fragmentSrc - * @type Array - */ - this.fragmentSrc = [ - 'precision lowp float;', - 'varying vec2 vTextureCoord;', - 'varying float vColor;', - 'uniform sampler2D uSampler;', - 'void main(void) {', - ' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;', - '}' - ]; - - /** - * The vertex shader. - * @property vertexSrc - * @type Array - */ - this.vertexSrc = [ - 'attribute vec2 aVertexPosition;', - 'attribute vec2 aPositionCoord;', - 'attribute vec2 aScale;', - 'attribute float aRotation;', - 'attribute vec2 aTextureCoord;', - 'attribute float aColor;', - - 'uniform vec2 projectionVector;', - 'uniform vec2 offsetVector;', - 'uniform mat3 uMatrix;', - - 'varying vec2 vTextureCoord;', - 'varying float vColor;', - - 'const vec2 center = vec2(-1.0, 1.0);', - - 'void main(void) {', - ' vec2 v;', - ' vec2 sv = aVertexPosition * aScale;', - ' v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);', - ' v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);', - ' v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;', - ' gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);', - ' vTextureCoord = aTextureCoord;', - // ' vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;', - ' vColor = aColor;', - '}' - ]; - - /** - * A local texture counter for multi-texture shaders. - * @property textureCount - * @type Number - */ - this.textureCount = 0; - - this.init(); -}; - -PIXI.PixiFastShader.prototype.constructor = PIXI.PixiFastShader; - -/** -* Initialises the shader. -* -* @method init -*/ -PIXI.PixiFastShader.prototype.init = function() -{ - var gl = this.gl; - - var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc); - - gl.useProgram(program); - - // get and store the uniforms for the shader - this.uSampler = gl.getUniformLocation(program, 'uSampler'); - - this.projectionVector = gl.getUniformLocation(program, 'projectionVector'); - this.offsetVector = gl.getUniformLocation(program, 'offsetVector'); - this.dimensions = gl.getUniformLocation(program, 'dimensions'); - this.uMatrix = gl.getUniformLocation(program, 'uMatrix'); - - // get and store the attributes - this.aVertexPosition = gl.getAttribLocation(program, 'aVertexPosition'); - this.aPositionCoord = gl.getAttribLocation(program, 'aPositionCoord'); - - this.aScale = gl.getAttribLocation(program, 'aScale'); - this.aRotation = gl.getAttribLocation(program, 'aRotation'); - - this.aTextureCoord = gl.getAttribLocation(program, 'aTextureCoord'); - this.colorAttribute = gl.getAttribLocation(program, 'aColor'); - - // Begin worst hack eva // - - // WHY??? ONLY on my chrome pixel the line above returns -1 when using filters? - // maybe its somthing to do with the current state of the gl context. - // Im convinced this is a bug in the chrome browser as there is NO reason why this should be returning -1 especially as it only manifests on my chrome pixel - // If theres any webGL people that know why could happen please help :) - if(this.colorAttribute === -1) - { - this.colorAttribute = 2; - } - - this.attributes = [this.aVertexPosition, this.aPositionCoord, this.aScale, this.aRotation, this.aTextureCoord, this.colorAttribute]; - - // End worst hack eva // - - this.program = program; -}; - -/** -* Destroys the shader. -* -* @method destroy -*/ -PIXI.PixiFastShader.prototype.destroy = function() -{ - this.gl.deleteProgram( this.program ); - this.uniforms = null; - this.gl = null; - - this.attributes = null; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class StripShader -* @constructor -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.StripShader = function(gl) -{ - /** - * @property _UID - * @type Number - * @private - */ - this._UID = PIXI._UID++; - - /** - * @property gl - * @type WebGLContext - */ - this.gl = gl; - - /** - * The WebGL program. - * @property program - * @type Any - */ - this.program = null; - - /** - * The fragment shader. - * @property fragmentSrc - * @type Array - */ - this.fragmentSrc = [ - 'precision mediump float;', - 'varying vec2 vTextureCoord;', - // 'varying float vColor;', - 'uniform float alpha;', - 'uniform sampler2D uSampler;', - - 'void main(void) {', - ' gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y)) * alpha;', - // ' gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);',//gl_FragColor * alpha;', - '}' - ]; - - /** - * The vertex shader. - * @property vertexSrc - * @type Array - */ - this.vertexSrc = [ - 'attribute vec2 aVertexPosition;', - 'attribute vec2 aTextureCoord;', - 'uniform mat3 translationMatrix;', - 'uniform vec2 projectionVector;', - 'uniform vec2 offsetVector;', - // 'uniform float alpha;', - // 'uniform vec3 tint;', - 'varying vec2 vTextureCoord;', - // 'varying vec4 vColor;', - - 'void main(void) {', - ' vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);', - ' v -= offsetVector.xyx;', - ' gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);', - ' vTextureCoord = aTextureCoord;', - // ' vColor = aColor * vec4(tint * alpha, alpha);', - '}' - ]; - - this.init(); -}; - -PIXI.StripShader.prototype.constructor = PIXI.StripShader; - -/** -* Initialises the shader. -* -* @method init -*/ -PIXI.StripShader.prototype.init = function() -{ - var gl = this.gl; - - var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc); - gl.useProgram(program); - - // get and store the uniforms for the shader - this.uSampler = gl.getUniformLocation(program, 'uSampler'); - this.projectionVector = gl.getUniformLocation(program, 'projectionVector'); - this.offsetVector = gl.getUniformLocation(program, 'offsetVector'); - this.colorAttribute = gl.getAttribLocation(program, 'aColor'); - //this.dimensions = gl.getUniformLocation(this.program, 'dimensions'); - - // get and store the attributes - this.aVertexPosition = gl.getAttribLocation(program, 'aVertexPosition'); - this.aTextureCoord = gl.getAttribLocation(program, 'aTextureCoord'); - - this.attributes = [this.aVertexPosition, this.aTextureCoord]; - - this.translationMatrix = gl.getUniformLocation(program, 'translationMatrix'); - this.alpha = gl.getUniformLocation(program, 'alpha'); - - this.program = program; -}; - -/** -* Destroys the shader. -* -* @method destroy -*/ -PIXI.StripShader.prototype.destroy = function() -{ - this.gl.deleteProgram( this.program ); - this.uniforms = null; - this.gl = null; - - this.attribute = null; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class PrimitiveShader -* @constructor -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.PrimitiveShader = function(gl) -{ - /** - * @property _UID - * @type Number - * @private - */ - this._UID = PIXI._UID++; - - /** - * @property gl - * @type WebGLContext - */ - this.gl = gl; - - /** - * The WebGL program. - * @property program - * @type Any - */ - this.program = null; - - /** - * The fragment shader. - * @property fragmentSrc - * @type Array - */ - this.fragmentSrc = [ - 'precision mediump float;', - 'varying vec4 vColor;', - - 'void main(void) {', - ' gl_FragColor = vColor;', - '}' - ]; - - /** - * The vertex shader. - * @property vertexSrc - * @type Array - */ - this.vertexSrc = [ - 'attribute vec2 aVertexPosition;', - 'attribute vec4 aColor;', - 'uniform mat3 translationMatrix;', - 'uniform vec2 projectionVector;', - 'uniform vec2 offsetVector;', - 'uniform float alpha;', - 'uniform float flipY;', - 'uniform vec3 tint;', - 'varying vec4 vColor;', - - 'void main(void) {', - ' vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);', - ' v -= offsetVector.xyx;', - ' gl_Position = vec4( v.x / projectionVector.x -1.0, (v.y / projectionVector.y * -flipY) + flipY , 0.0, 1.0);', - ' vColor = aColor * vec4(tint * alpha, alpha);', - '}' - ]; - - this.init(); -}; - -PIXI.PrimitiveShader.prototype.constructor = PIXI.PrimitiveShader; - -/** -* Initialises the shader. -* -* @method init -*/ -PIXI.PrimitiveShader.prototype.init = function() -{ - var gl = this.gl; - - var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc); - gl.useProgram(program); - - // get and store the uniforms for the shader - this.projectionVector = gl.getUniformLocation(program, 'projectionVector'); - this.offsetVector = gl.getUniformLocation(program, 'offsetVector'); - this.tintColor = gl.getUniformLocation(program, 'tint'); - this.flipY = gl.getUniformLocation(program, 'flipY'); - - // get and store the attributes - this.aVertexPosition = gl.getAttribLocation(program, 'aVertexPosition'); - this.colorAttribute = gl.getAttribLocation(program, 'aColor'); - - this.attributes = [this.aVertexPosition, this.colorAttribute]; - - this.translationMatrix = gl.getUniformLocation(program, 'translationMatrix'); - this.alpha = gl.getUniformLocation(program, 'alpha'); - - this.program = program; -}; - -/** -* Destroys the shader. -* -* @method destroy -*/ -PIXI.PrimitiveShader.prototype.destroy = function() -{ - this.gl.deleteProgram( this.program ); - this.uniforms = null; - this.gl = null; - - this.attributes = null; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class ComplexPrimitiveShader -* @constructor -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.ComplexPrimitiveShader = function(gl) -{ - /** - * @property _UID - * @type Number - * @private - */ - this._UID = PIXI._UID++; - - /** - * @property gl - * @type WebGLContext - */ - this.gl = gl; - - /** - * The WebGL program. - * @property program - * @type Any - */ - this.program = null; - - /** - * The fragment shader. - * @property fragmentSrc - * @type Array - */ - this.fragmentSrc = [ - - 'precision mediump float;', - - 'varying vec4 vColor;', - - 'void main(void) {', - ' gl_FragColor = vColor;', - '}' - ]; - - /** - * The vertex shader. - * @property vertexSrc - * @type Array - */ - this.vertexSrc = [ - 'attribute vec2 aVertexPosition;', - //'attribute vec4 aColor;', - 'uniform mat3 translationMatrix;', - 'uniform vec2 projectionVector;', - 'uniform vec2 offsetVector;', - - 'uniform vec3 tint;', - 'uniform float alpha;', - 'uniform vec3 color;', - 'uniform float flipY;', - 'varying vec4 vColor;', - - 'void main(void) {', - ' vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);', - ' v -= offsetVector.xyx;', - ' gl_Position = vec4( v.x / projectionVector.x -1.0, (v.y / projectionVector.y * -flipY) + flipY , 0.0, 1.0);', - ' vColor = vec4(color * alpha * tint, alpha);',//" * vec4(tint * alpha, alpha);', - '}' - ]; - - this.init(); -}; - -PIXI.ComplexPrimitiveShader.prototype.constructor = PIXI.ComplexPrimitiveShader; - -/** -* Initialises the shader. -* -* @method init -*/ -PIXI.ComplexPrimitiveShader.prototype.init = function() -{ - var gl = this.gl; - - var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc); - gl.useProgram(program); - - // get and store the uniforms for the shader - this.projectionVector = gl.getUniformLocation(program, 'projectionVector'); - this.offsetVector = gl.getUniformLocation(program, 'offsetVector'); - this.tintColor = gl.getUniformLocation(program, 'tint'); - this.color = gl.getUniformLocation(program, 'color'); - this.flipY = gl.getUniformLocation(program, 'flipY'); - - // get and store the attributes - this.aVertexPosition = gl.getAttribLocation(program, 'aVertexPosition'); - // this.colorAttribute = gl.getAttribLocation(program, 'aColor'); - - this.attributes = [this.aVertexPosition, this.colorAttribute]; - - this.translationMatrix = gl.getUniformLocation(program, 'translationMatrix'); - this.alpha = gl.getUniformLocation(program, 'alpha'); - - this.program = program; -}; - -/** -* Destroys the shader. -* -* @method destroy -*/ -PIXI.ComplexPrimitiveShader.prototype.destroy = function() -{ - this.gl.deleteProgram( this.program ); - this.uniforms = null; - this.gl = null; - - this.attribute = null; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -PIXI.glContexts = []; // this is where we store the webGL contexts for easy access. -PIXI.instances = []; - -/** - * The WebGLRenderer draws the stage and all its content onto a webGL enabled canvas. This renderer - * should be used for browsers that support webGL. This Render works by automatically managing webGLBatchs. - * 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 :) - * - * @class WebGLRenderer - * @constructor - * @param game {Phaser.Game} A reference to the Phaser Game instance - */ -PIXI.WebGLRenderer = function(game) { - - /** - * @property {Phaser.Game} game - A reference to the Phaser Game instance. - */ - this.game = game; - - if (!PIXI.defaultRenderer) - { - PIXI.defaultRenderer = this; - } - - /** - * @property type - * @type Number - */ - this.type = PIXI.WEBGL_RENDERER; - - /** - * The resolution of the renderer - * - * @property resolution - * @type Number - * @default 1 - */ - this.resolution = game.resolution; - - /** - * Whether the render view is transparent - * - * @property transparent - * @type Boolean - */ - this.transparent = game.transparent; - - /** - * Whether the render view should be resized automatically - * - * @property autoResize - * @type Boolean - */ - this.autoResize = false; - - /** - * The value of the preserveDrawingBuffer flag affects whether or not the contents of the stencil buffer is retained after rendering. - * - * @property preserveDrawingBuffer - * @type Boolean - */ - this.preserveDrawingBuffer = game.preserveDrawingBuffer; - - /** - * This sets if the WebGLRenderer will clear the context texture or not before the new render pass. If true: - * If the Stage is NOT transparent, Pixi will clear to alpha (0, 0, 0, 0). - * 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. - * - * @property clearBeforeRender - * @type Boolean - * @default - */ - this.clearBeforeRender = game.clearBeforeRender; - - /** - * The width of the canvas view - * - * @property width - * @type Number - */ - this.width = game.width; - - /** - * The height of the canvas view - * - * @property height - * @type Number - */ - this.height = game.height; - - /** - * The canvas element that everything is drawn to - * - * @property view - * @type HTMLCanvasElement - */ - this.view = game.canvas; - - /** - * @property _contextOptions - * @type Object - * @private - */ - this._contextOptions = { - alpha: this.transparent, - antialias: game.antialias, - premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', - stencil: true, - preserveDrawingBuffer: this.preserveDrawingBuffer - }; - - /** - * @property projection - * @type Point - */ - this.projection = new PIXI.Point(); - - /** - * @property offset - * @type Point - */ - this.offset = new PIXI.Point(); - - // time to create the render managers! each one focuses on managing a state in webGL - - /** - * Deals with managing the shader programs and their attribs - * @property shaderManager - * @type WebGLShaderManager - */ - this.shaderManager = new PIXI.WebGLShaderManager(); - - /** - * Manages the rendering of sprites - * @property spriteBatch - * @type WebGLSpriteBatch - */ - this.spriteBatch = new PIXI.WebGLSpriteBatch(); - - /** - * Manages the masks using the stencil buffer - * @property maskManager - * @type WebGLMaskManager - */ - this.maskManager = new PIXI.WebGLMaskManager(); - - /** - * Manages the filters - * @property filterManager - * @type WebGLFilterManager - */ - this.filterManager = new PIXI.WebGLFilterManager(); - - /** - * Manages the stencil buffer - * @property stencilManager - * @type WebGLStencilManager - */ - this.stencilManager = new PIXI.WebGLStencilManager(); - - /** - * Manages the blendModes - * @property blendModeManager - * @type WebGLBlendModeManager - */ - this.blendModeManager = new PIXI.WebGLBlendModeManager(); - - /** - * @property renderSession - * @type Object - */ - this.renderSession = {}; - - // Needed? - this.renderSession.game = this.game; - this.renderSession.gl = this.gl; - this.renderSession.drawCount = 0; - this.renderSession.shaderManager = this.shaderManager; - this.renderSession.maskManager = this.maskManager; - this.renderSession.filterManager = this.filterManager; - this.renderSession.blendModeManager = this.blendModeManager; - this.renderSession.spriteBatch = this.spriteBatch; - this.renderSession.stencilManager = this.stencilManager; - this.renderSession.renderer = this; - this.renderSession.resolution = this.resolution; - - // time init the context.. - this.initContext(); - - // map some webGL blend modes.. - this.mapBlendModes(); - -}; - -// constructor -PIXI.WebGLRenderer.prototype.constructor = PIXI.WebGLRenderer; - -/** -* @method initContext -*/ -PIXI.WebGLRenderer.prototype.initContext = function() -{ - var gl = this.view.getContext('webgl', this._contextOptions) || this.view.getContext('experimental-webgl', this._contextOptions); - - this.gl = gl; - - if (!gl) { - // fail, not able to get a context - throw new Error('This browser does not support webGL. Try using the canvas renderer'); - } - - this.glContextId = gl.id = PIXI.WebGLRenderer.glContextId++; - - PIXI.glContexts[this.glContextId] = gl; - - PIXI.instances[this.glContextId] = this; - - // set up the default pixi settings.. - gl.disable(gl.DEPTH_TEST); - gl.disable(gl.CULL_FACE); - gl.enable(gl.BLEND); - - // need to set the context for all the managers... - this.shaderManager.setContext(gl); - this.spriteBatch.setContext(gl); - this.maskManager.setContext(gl); - this.filterManager.setContext(gl); - this.blendModeManager.setContext(gl); - this.stencilManager.setContext(gl); - - this.renderSession.gl = this.gl; - - // now resize and we are good to go! - this.resize(this.width, this.height); -}; - -/** - * Renders the stage to its webGL view - * - * @method render - * @param stage {Stage} the Stage element to be rendered - */ -PIXI.WebGLRenderer.prototype.render = function(stage) -{ - // no point rendering if our context has been blown up! - if (this.contextLost) - { - return; - } - - var gl = this.gl; - - // -- Does this need to be set every frame? -- // - gl.viewport(0, 0, this.width, this.height); - - // make sure we are bound to the main frame buffer - gl.bindFramebuffer(gl.FRAMEBUFFER, null); - - if (this.game.clearBeforeRender) - { - gl.clearColor(stage._bgColor.r, stage._bgColor.g, stage._bgColor.b, stage._bgColor.a); - - gl.clear(gl.COLOR_BUFFER_BIT); - } - - this.offset.x = this.game.camera._shake.x; - this.offset.y = this.game.camera._shake.y; - - this.renderDisplayObject(stage, this.projection); -}; - -/** - * Renders a Display Object. - * - * @method renderDisplayObject - * @param displayObject {DisplayObject} The DisplayObject to render - * @param projection {Point} The projection - * @param buffer {Array} a standard WebGL buffer - */ -PIXI.WebGLRenderer.prototype.renderDisplayObject = function(displayObject, projection, buffer, matrix) -{ - this.renderSession.blendModeManager.setBlendMode(PIXI.blendModes.NORMAL); - - // reset the render session data.. - this.renderSession.drawCount = 0; - - // make sure to flip the Y if using a render texture.. - this.renderSession.flipY = buffer ? -1 : 1; - - // set the default projection - this.renderSession.projection = projection; - - //set the default offset - this.renderSession.offset = this.offset; - - // start the sprite batch - this.spriteBatch.begin(this.renderSession); - - // start the filter manager - this.filterManager.begin(this.renderSession, buffer); - - // render the scene! - displayObject._renderWebGL(this.renderSession, matrix); - - // finish the sprite batch - this.spriteBatch.end(); -}; - -/** - * Resizes the webGL view to the specified width and height. - * - * @method resize - * @param width {Number} the new width of the webGL view - * @param height {Number} the new height of the webGL view - */ -PIXI.WebGLRenderer.prototype.resize = function(width, height) -{ - this.width = width * this.resolution; - this.height = height * this.resolution; - - this.view.width = this.width; - this.view.height = this.height; - - if (this.autoResize) { - this.view.style.width = this.width / this.resolution + 'px'; - this.view.style.height = this.height / this.resolution + 'px'; - } - - this.gl.viewport(0, 0, this.width, this.height); - - this.projection.x = this.width / 2 / this.resolution; - this.projection.y = -this.height / 2 / this.resolution; -}; - -/** - * Updates and Creates a WebGL texture for the renderers context. - * - * @method updateTexture - * @param texture {Texture} the texture to update - * @return {boolean} True if the texture was successfully bound, otherwise false. - */ -PIXI.WebGLRenderer.prototype.updateTexture = function(texture) -{ - if (!texture.hasLoaded) - { - return false; - } - - var gl = this.gl; - - if (!texture._glTextures[gl.id]) - { - texture._glTextures[gl.id] = gl.createTexture(); - } - - gl.bindTexture(gl.TEXTURE_2D, texture._glTextures[gl.id]); - - gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultipliedAlpha); - - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.source); - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, texture.scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR : gl.NEAREST); - - if (texture.mipmap && PIXI.isPowerOfTwo(texture.width, texture.height)) - { - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, texture.scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR_MIPMAP_LINEAR : gl.NEAREST_MIPMAP_NEAREST); - gl.generateMipmap(gl.TEXTURE_2D); - } - else - { - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, texture.scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR : gl.NEAREST); - } - - if (!texture._powerOf2) - { - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - } - else - { - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); - } - - texture._dirty[gl.id] = false; - - // return texture._glTextures[gl.id]; - return true; - -}; - -/** - * Removes everything from the renderer (event listeners, spritebatch, etc...) - * - * @method destroy - */ -PIXI.WebGLRenderer.prototype.destroy = function() -{ - PIXI.glContexts[this.glContextId] = null; - - this.projection = null; - this.offset = null; - - this.shaderManager.destroy(); - this.spriteBatch.destroy(); - this.maskManager.destroy(); - this.filterManager.destroy(); - - this.shaderManager = null; - this.spriteBatch = null; - this.maskManager = null; - this.filterManager = null; - - this.gl = null; - this.renderSession = null; - - PIXI.CanvasPool.remove(this); - - PIXI.instances[this.glContextId] = null; - - PIXI.WebGLRenderer.glContextId--; -}; - -/** - * Maps Pixi blend modes to WebGL blend modes. - * - * @method mapBlendModes - */ -PIXI.WebGLRenderer.prototype.mapBlendModes = function() -{ - var gl = this.gl; - - if (!PIXI.blendModesWebGL) - { - var b = []; - var modes = PIXI.blendModes; - - b[modes.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.ADD] = [gl.SRC_ALPHA, gl.DST_ALPHA]; - b[modes.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.SCREEN] = [gl.SRC_ALPHA, gl.ONE]; - b[modes.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - b[modes.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - - PIXI.blendModesWebGL = b; - } -}; - -PIXI.WebGLRenderer.glContextId = 0; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class WebGLBlendModeManager -* @constructor -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.WebGLBlendModeManager = function() -{ - /** - * @property currentBlendMode - * @type Number - */ - this.currentBlendMode = 99999; -}; - -PIXI.WebGLBlendModeManager.prototype.constructor = PIXI.WebGLBlendModeManager; - -/** - * Sets the WebGL Context. - * - * @method setContext - * @param gl {WebGLContext} the current WebGL drawing context - */ -PIXI.WebGLBlendModeManager.prototype.setContext = function(gl) -{ - this.gl = gl; -}; - -/** -* Sets-up the given blendMode from WebGL's point of view. -* -* @method setBlendMode -* @param blendMode {Number} the blendMode, should be a Pixi const, such as PIXI.BlendModes.ADD -*/ -PIXI.WebGLBlendModeManager.prototype.setBlendMode = function(blendMode) -{ - if(this.currentBlendMode === blendMode)return false; - - this.currentBlendMode = blendMode; - - var blendModeWebGL = PIXI.blendModesWebGL[this.currentBlendMode]; - - if (blendModeWebGL) - { - this.gl.blendFunc(blendModeWebGL[0], blendModeWebGL[1]); - } - - return true; -}; - -/** -* Destroys this object. -* -* @method destroy -*/ -PIXI.WebGLBlendModeManager.prototype.destroy = function() -{ - this.gl = null; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class WebGLMaskManager -* @constructor -* @private -*/ -PIXI.WebGLMaskManager = function() -{ -}; - -PIXI.WebGLMaskManager.prototype.constructor = PIXI.WebGLMaskManager; - -/** -* Sets the drawing context to the one given in parameter. -* -* @method setContext -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.WebGLMaskManager.prototype.setContext = function(gl) -{ - this.gl = gl; -}; - -/** -* Applies the Mask and adds it to the current filter stack. -* -* @method pushMask -* @param maskData {Array} -* @param renderSession {Object} -*/ -PIXI.WebGLMaskManager.prototype.pushMask = function(maskData, renderSession) -{ - var gl = renderSession.gl; - - if (maskData.dirty) - { - PIXI.WebGLGraphics.updateGraphics(maskData, gl); - } - - if (maskData._webGL[gl.id] === undefined || maskData._webGL[gl.id].data === undefined || maskData._webGL[gl.id].data.length === 0) - { - return; - } - - renderSession.stencilManager.pushStencil(maskData, maskData._webGL[gl.id].data[0], renderSession); -}; - -/** -* Removes the last filter from the filter stack and doesn't return it. -* -* @method popMask -* @param maskData {Array} -* @param renderSession {Object} an object containing all the useful parameters -*/ -PIXI.WebGLMaskManager.prototype.popMask = function(maskData, renderSession) -{ - var gl = this.gl; - - if (maskData._webGL[gl.id] === undefined || maskData._webGL[gl.id].data === undefined || maskData._webGL[gl.id].data.length === 0) - { - return; - } - - renderSession.stencilManager.popStencil(maskData, maskData._webGL[gl.id].data[0], renderSession); - -}; - -/** -* Destroys the mask stack. -* -* @method destroy -*/ -PIXI.WebGLMaskManager.prototype.destroy = function() -{ - this.gl = null; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class WebGLStencilManager -* @constructor -* @private -*/ -PIXI.WebGLStencilManager = function() -{ - this.stencilStack = []; - this.reverse = true; - this.count = 0; -}; - -/** -* Sets the drawing context to the one given in parameter. -* -* @method setContext -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.WebGLStencilManager.prototype.setContext = function(gl) -{ - this.gl = gl; -}; - -/** -* Applies the Mask and adds it to the current filter stack. -* -* @method pushMask -* @param graphics {Graphics} -* @param webGLData {Array} -* @param renderSession {Object} -*/ -PIXI.WebGLStencilManager.prototype.pushStencil = function(graphics, webGLData, renderSession) -{ - var gl = this.gl; - this.bindGraphics(graphics, webGLData, renderSession); - - if(this.stencilStack.length === 0) - { - gl.enable(gl.STENCIL_TEST); - gl.clear(gl.STENCIL_BUFFER_BIT); - this.reverse = true; - this.count = 0; - } - - this.stencilStack.push(webGLData); - - var level = this.count; - - gl.colorMask(false, false, false, false); - - gl.stencilFunc(gl.ALWAYS,0,0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.INVERT); - - // draw the triangle strip! - - if(webGLData.mode === 1) - { - gl.drawElements(gl.TRIANGLE_FAN, webGLData.indices.length - 4, gl.UNSIGNED_SHORT, 0 ); - - if(this.reverse) - { - gl.stencilFunc(gl.EQUAL, 0xFF - level, 0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR); - } - else - { - gl.stencilFunc(gl.EQUAL,level, 0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR); - } - - // draw a quad to increment.. - gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 ); - - if(this.reverse) - { - gl.stencilFunc(gl.EQUAL,0xFF-(level+1), 0xFF); - } - else - { - gl.stencilFunc(gl.EQUAL,level+1, 0xFF); - } - - this.reverse = !this.reverse; - } - else - { - if(!this.reverse) - { - gl.stencilFunc(gl.EQUAL, 0xFF - level, 0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR); - } - else - { - gl.stencilFunc(gl.EQUAL,level, 0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR); - } - - gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 ); - - if(!this.reverse) - { - gl.stencilFunc(gl.EQUAL,0xFF-(level+1), 0xFF); - } - else - { - gl.stencilFunc(gl.EQUAL,level+1, 0xFF); - } - } - - gl.colorMask(true, true, true, true); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.KEEP); - - this.count++; -}; - -/** - * TODO this does not belong here! - * - * @method bindGraphics - * @param graphics {Graphics} - * @param webGLData {Array} - * @param renderSession {Object} - */ -PIXI.WebGLStencilManager.prototype.bindGraphics = function(graphics, webGLData, renderSession) -{ - //if(this._currentGraphics === graphics)return; - this._currentGraphics = graphics; - - var gl = this.gl; - - // bind the graphics object.. - var projection = renderSession.projection, - offset = renderSession.offset, - shader;// = renderSession.shaderManager.primitiveShader; - - if(webGLData.mode === 1) - { - shader = renderSession.shaderManager.complexPrimitiveShader; - - renderSession.shaderManager.setShader( shader ); - - gl.uniform1f(shader.flipY, renderSession.flipY); - - gl.uniformMatrix3fv(shader.translationMatrix, false, graphics.worldTransform.toArray(true)); - - gl.uniform2f(shader.projectionVector, projection.x, -projection.y); - gl.uniform2f(shader.offsetVector, -offset.x, -offset.y); - - gl.uniform3fv(shader.tintColor, PIXI.hex2rgb(graphics.tint)); - gl.uniform3fv(shader.color, webGLData.color); - - gl.uniform1f(shader.alpha, graphics.worldAlpha * webGLData.alpha); - - gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer); - - gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 4 * 2, 0); - - - // now do the rest.. - // set the index buffer! - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer); - } - else - { - //renderSession.shaderManager.activatePrimitiveShader(); - shader = renderSession.shaderManager.primitiveShader; - renderSession.shaderManager.setShader( shader ); - - gl.uniformMatrix3fv(shader.translationMatrix, false, graphics.worldTransform.toArray(true)); - - gl.uniform1f(shader.flipY, renderSession.flipY); - gl.uniform2f(shader.projectionVector, projection.x, -projection.y); - gl.uniform2f(shader.offsetVector, -offset.x, -offset.y); - - gl.uniform3fv(shader.tintColor, PIXI.hex2rgb(graphics.tint)); - - gl.uniform1f(shader.alpha, graphics.worldAlpha); - - gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer); - - gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 4 * 6, 0); - gl.vertexAttribPointer(shader.colorAttribute, 4, gl.FLOAT, false,4 * 6, 2 * 4); - - // set the index buffer! - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer); - } -}; - -/** - * @method popStencil - * @param graphics {Graphics} - * @param webGLData {Array} - * @param renderSession {Object} - */ -PIXI.WebGLStencilManager.prototype.popStencil = function(graphics, webGLData, renderSession) -{ - var gl = this.gl; - this.stencilStack.pop(); - - this.count--; - - if(this.stencilStack.length === 0) - { - // the stack is empty! - gl.disable(gl.STENCIL_TEST); - - } - else - { - - var level = this.count; - - this.bindGraphics(graphics, webGLData, renderSession); - - gl.colorMask(false, false, false, false); - - if(webGLData.mode === 1) - { - this.reverse = !this.reverse; - - if(this.reverse) - { - gl.stencilFunc(gl.EQUAL, 0xFF - (level+1), 0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR); - } - else - { - gl.stencilFunc(gl.EQUAL,level+1, 0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR); - } - - // draw a quad to increment.. - gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 ); - - gl.stencilFunc(gl.ALWAYS,0,0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.INVERT); - - // draw the triangle strip! - gl.drawElements(gl.TRIANGLE_FAN, webGLData.indices.length - 4, gl.UNSIGNED_SHORT, 0 ); - - if(!this.reverse) - { - gl.stencilFunc(gl.EQUAL,0xFF-(level), 0xFF); - } - else - { - gl.stencilFunc(gl.EQUAL,level, 0xFF); - } - - } - else - { - // console.log("<<>>") - if(!this.reverse) - { - gl.stencilFunc(gl.EQUAL, 0xFF - (level+1), 0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR); - } - else - { - gl.stencilFunc(gl.EQUAL,level+1, 0xFF); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR); - } - - gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 ); - - if(!this.reverse) - { - gl.stencilFunc(gl.EQUAL,0xFF-(level), 0xFF); - } - else - { - gl.stencilFunc(gl.EQUAL,level, 0xFF); - } - } - - gl.colorMask(true, true, true, true); - gl.stencilOp(gl.KEEP,gl.KEEP,gl.KEEP); - - - } -}; - -/** -* Destroys the mask stack. -* -* @method destroy -*/ -PIXI.WebGLStencilManager.prototype.destroy = function() -{ - this.stencilStack = null; - this.gl = null; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class WebGLShaderManager -* @constructor -* @private -*/ -PIXI.WebGLShaderManager = function() -{ - /** - * @property maxAttibs - * @type Number - */ - this.maxAttibs = 10; - - /** - * @property attribState - * @type Array - */ - this.attribState = []; - - /** - * @property tempAttribState - * @type Array - */ - this.tempAttribState = []; - - for (var i = 0; i < this.maxAttibs; i++) - { - this.attribState[i] = false; - } - - /** - * @property stack - * @type Array - */ - this.stack = []; - -}; - -PIXI.WebGLShaderManager.prototype.constructor = PIXI.WebGLShaderManager; - -/** -* Initialises the context and the properties. -* -* @method setContext -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.WebGLShaderManager.prototype.setContext = function(gl) -{ - this.gl = gl; - - // the next one is used for rendering primitives - this.primitiveShader = new PIXI.PrimitiveShader(gl); - - // the next one is used for rendering triangle strips - this.complexPrimitiveShader = new PIXI.ComplexPrimitiveShader(gl); - - // this shader is used for the default sprite rendering - this.defaultShader = new PIXI.PixiShader(gl); - - // this shader is used for the fast sprite rendering - this.fastShader = new PIXI.PixiFastShader(gl); - - // the next one is used for rendering triangle strips - this.stripShader = new PIXI.StripShader(gl); - - this.setShader(this.defaultShader); -}; - -/** -* Takes the attributes given in parameters. -* -* @method setAttribs -* @param attribs {Array} attribs -*/ -PIXI.WebGLShaderManager.prototype.setAttribs = function(attribs) -{ - // reset temp state - var i; - - for (i = 0; i < this.tempAttribState.length; i++) - { - this.tempAttribState[i] = false; - } - - // set the new attribs - for (i = 0; i < attribs.length; i++) - { - var attribId = attribs[i]; - this.tempAttribState[attribId] = true; - } - - var gl = this.gl; - - for (i = 0; i < this.attribState.length; i++) - { - if(this.attribState[i] !== this.tempAttribState[i]) - { - this.attribState[i] = this.tempAttribState[i]; - - if(this.tempAttribState[i]) - { - gl.enableVertexAttribArray(i); - } - else - { - gl.disableVertexAttribArray(i); - } - } - } -}; - -/** -* Sets the current shader. -* -* @method setShader -* @param shader {Any} -*/ -PIXI.WebGLShaderManager.prototype.setShader = function(shader) -{ - if(this._currentId === shader._UID)return false; - - this._currentId = shader._UID; - - this.currentShader = shader; - - this.gl.useProgram(shader.program); - this.setAttribs(shader.attributes); - - return true; -}; - -/** -* Destroys this object. -* -* @method destroy -*/ -PIXI.WebGLShaderManager.prototype.destroy = function() -{ - this.attribState = null; - - this.tempAttribState = null; - - this.primitiveShader.destroy(); - - this.complexPrimitiveShader.destroy(); - - this.defaultShader.destroy(); - - this.fastShader.destroy(); - - this.stripShader.destroy(); - - this.gl = null; -}; - -/** - * @author Mat Groves - * - * Big thanks to the very clever Matt DesLauriers https://github.com/mattdesl/ - * for creating the original pixi version! - * Also a thanks to https://github.com/bchevalier for tweaking the tint and alpha so that they now share 4 bytes on the vertex buffer - * - * Heavily inspired by LibGDX's WebGLSpriteBatch: - * https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g2d/WebGLSpriteBatch.java - */ - - /** - * - * @class WebGLSpriteBatch - * @private - * @constructor - */ -PIXI.WebGLSpriteBatch = function() -{ - /** - * @property vertSize - * @type Number - */ - this.vertSize = 5; - - /** - * The number of images in the SpriteBatch before it flushes - * @property size - * @type Number - */ - this.size = 2000;//Math.pow(2, 16) / this.vertSize; - - //the total number of bytes in our batch - var numVerts = this.size * 4 * 4 * this.vertSize; - //the total number of indices in our batch - var numIndices = this.size * 6; - - /** - * Holds the vertices - * - * @property vertices - * @type ArrayBuffer - */ - this.vertices = new PIXI.ArrayBuffer(numVerts); - - /** - * View on the vertices as a Float32Array - * - * @property positions - * @type Float32Array - */ - this.positions = new PIXI.Float32Array(this.vertices); - - /** - * View on the vertices as a Uint32Array - * - * @property colors - * @type Uint32Array - */ - this.colors = new PIXI.Uint32Array(this.vertices); - - /** - * Holds the indices - * - * @property indices - * @type Uint16Array - */ - this.indices = new PIXI.Uint16Array(numIndices); - - /** - * @property lastIndexCount - * @type Number - */ - this.lastIndexCount = 0; - - for (var i=0, j=0; i < numIndices; i += 6, j += 4) - { - this.indices[i + 0] = j + 0; - this.indices[i + 1] = j + 1; - this.indices[i + 2] = j + 2; - this.indices[i + 3] = j + 0; - this.indices[i + 4] = j + 2; - this.indices[i + 5] = j + 3; - } - - /** - * @property drawing - * @type Boolean - */ - this.drawing = false; - - /** - * @property currentBatchSize - * @type Number - */ - this.currentBatchSize = 0; - - /** - * @property currentBaseTexture - * @type BaseTexture - */ - this.currentBaseTexture = null; - - /** - * @property dirty - * @type Boolean - */ - this.dirty = true; - - /** - * @property textures - * @type Array - */ - this.textures = []; - - /** - * @property blendModes - * @type Array - */ - this.blendModes = []; - - /** - * @property shaders - * @type Array - */ - this.shaders = []; - - /** - * @property sprites - * @type Array - */ - this.sprites = []; - - /** - * @property defaultShader - * @type AbstractFilter - */ - this.defaultShader = new PIXI.AbstractFilter([ - 'precision lowp float;', - 'varying vec2 vTextureCoord;', - 'varying vec4 vColor;', - 'uniform sampler2D uSampler;', - 'void main(void) {', - ' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;', - '}' - ]); -}; - -/** -* @method setContext -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.WebGLSpriteBatch.prototype.setContext = function(gl) -{ - this.gl = gl; - - // create a couple of buffers - this.vertexBuffer = gl.createBuffer(); - this.indexBuffer = gl.createBuffer(); - - // 65535 is max index, so 65535 / 6 = 10922. - - //upload the index data - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices, gl.STATIC_DRAW); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.vertices, gl.DYNAMIC_DRAW); - - this.currentBlendMode = 99999; - - var shader = new PIXI.PixiShader(gl); - - shader.fragmentSrc = this.defaultShader.fragmentSrc; - shader.uniforms = {}; - shader.init(); - - this.defaultShader.shaders[gl.id] = shader; -}; - -/** -* @method begin -* @param renderSession {Object} The RenderSession object -*/ -PIXI.WebGLSpriteBatch.prototype.begin = function(renderSession) -{ - this.renderSession = renderSession; - this.shader = this.renderSession.shaderManager.defaultShader; - - this.start(); -}; - -/** -* @method end -*/ -PIXI.WebGLSpriteBatch.prototype.end = function() -{ - this.flush(); -}; - -/** -* @method render -* @param 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. -*/ -PIXI.WebGLSpriteBatch.prototype.render = function(sprite, matrix) -{ - var texture = sprite.texture; - - // They provided an alternative rendering matrix, so use it - var wt = sprite.worldTransform; - - if (matrix) - { - wt = matrix; - } - - // check texture.. - if (this.currentBatchSize >= this.size) - { - this.flush(); - this.currentBaseTexture = texture.baseTexture; - } - - // get the uvs for the texture - var uvs = texture._uvs; - - // if the uvs have not updated then no point rendering just yet! - if (!uvs) - { - return; - } - - var aX = sprite.anchor.x; - var aY = sprite.anchor.y; - - var w0, w1, h0, h1; - - if (texture.trim) - { - // if the sprite is trimmed then we need to add the extra space before transforming the sprite coords. - var trim = texture.trim; - - w1 = trim.x - aX * trim.width; - w0 = w1 + texture.crop.width; - - h1 = trim.y - aY * trim.height; - h0 = h1 + texture.crop.height; - } - else - { - w0 = (texture.frame.width) * (1-aX); - w1 = (texture.frame.width) * -aX; - - h0 = texture.frame.height * (1-aY); - h1 = texture.frame.height * -aY; - } - - var i = this.currentBatchSize * 4 * this.vertSize; - var resolution = texture.baseTexture.resolution; - - var a = wt.a / resolution; - var b = wt.b / resolution; - var c = wt.c / resolution; - var d = wt.d / resolution; - var tx = wt.tx; - var ty = wt.ty; - - var colors = this.colors; - var positions = this.positions; - - if (this.renderSession.roundPixels) - { - // xy - positions[i] = a * w1 + c * h1 + tx | 0; - positions[i+1] = d * h1 + b * w1 + ty | 0; - - // xy - positions[i+5] = a * w0 + c * h1 + tx | 0; - positions[i+6] = d * h1 + b * w0 + ty | 0; - - // xy - positions[i+10] = a * w0 + c * h0 + tx | 0; - positions[i+11] = d * h0 + b * w0 + ty | 0; - - // xy - positions[i+15] = a * w1 + c * h0 + tx | 0; - positions[i+16] = d * h0 + b * w1 + ty | 0; - } - else - { - // xy - positions[i] = a * w1 + c * h1 + tx; - positions[i+1] = d * h1 + b * w1 + ty; - - // xy - positions[i+5] = a * w0 + c * h1 + tx; - positions[i+6] = d * h1 + b * w0 + ty; - - // xy - positions[i+10] = a * w0 + c * h0 + tx; - positions[i+11] = d * h0 + b * w0 + ty; - - // xy - positions[i+15] = a * w1 + c * h0 + tx; - positions[i+16] = d * h0 + b * w1 + ty; - } - - // uv - positions[i+2] = uvs.x0; - positions[i+3] = uvs.y0; - - // uv - positions[i+7] = uvs.x1; - positions[i+8] = uvs.y1; - - // uv - positions[i+12] = uvs.x2; - positions[i+13] = uvs.y2; - - // uv - positions[i+17] = uvs.x3; - positions[i+18] = uvs.y3; - - // color and alpha - var tint = sprite.tint; - - colors[i+4] = colors[i+9] = colors[i+14] = colors[i+19] = (tint >> 16) + (tint & 0xff00) + ((tint & 0xff) << 16) + (sprite.worldAlpha * 255 << 24); - - // increment the batchsize - this.sprites[this.currentBatchSize++] = sprite; - -}; - -/** -* Renders a TilingSprite using the spriteBatch. -* -* @method renderTilingSprite -* @param sprite {TilingSprite} the sprite to render -*/ -PIXI.WebGLSpriteBatch.prototype.renderTilingSprite = function(sprite) -{ - var texture = sprite.tilingTexture; - - // check texture.. - if (this.currentBatchSize >= this.size) - { - this.flush(); - this.currentBaseTexture = texture.baseTexture; - } - - // set the textures uvs temporarily - if (!sprite._uvs) - { - sprite._uvs = new PIXI.TextureUvs(); - } - - var uvs = sprite._uvs; - - var w = texture.baseTexture.width; - var h = texture.baseTexture.height; - - // var w = sprite._frame.sourceSizeW; - // var h = sprite._frame.sourceSizeH; - - // w = 16; - // h = 16; - - sprite.tilePosition.x %= w * sprite.tileScaleOffset.x; - sprite.tilePosition.y %= h * sprite.tileScaleOffset.y; - - var offsetX = sprite.tilePosition.x / (w * sprite.tileScaleOffset.x); - var offsetY = sprite.tilePosition.y / (h * sprite.tileScaleOffset.y); - - var scaleX = (sprite.width / w) / (sprite.tileScale.x * sprite.tileScaleOffset.x); - var scaleY = (sprite.height / h) / (sprite.tileScale.y * sprite.tileScaleOffset.y); - - uvs.x0 = 0 - offsetX; - uvs.y0 = 0 - offsetY; - - uvs.x1 = (1 * scaleX) - offsetX; - uvs.y1 = 0 - offsetY; - - uvs.x2 = (1 * scaleX) - offsetX; - uvs.y2 = (1 * scaleY) - offsetY; - - uvs.x3 = 0 - offsetX; - uvs.y3 = (1 * scaleY) - offsetY; - - // Get the sprites current alpha and tint and combine them into a single color - var tint = sprite.tint; - var color = (tint >> 16) + (tint & 0xff00) + ((tint & 0xff) << 16) + (sprite.worldAlpha * 255 << 24); - - var positions = this.positions; - var colors = this.colors; - - var width = sprite.width; - var height = sprite.height; - - // TODO trim?? - var aX = sprite.anchor.x; - var aY = sprite.anchor.y; - var w0 = width * (1-aX); - var w1 = width * -aX; - - var h0 = height * (1-aY); - var h1 = height * -aY; - - var i = this.currentBatchSize * 4 * this.vertSize; - - var resolution = texture.baseTexture.resolution; - - var wt = sprite.worldTransform; - - var a = wt.a / resolution; - var b = wt.b / resolution; - var c = wt.c / resolution; - var d = wt.d / resolution; - var tx = wt.tx; - var ty = wt.ty; - - // xy - positions[i++] = a * w1 + c * h1 + tx; - positions[i++] = d * h1 + b * w1 + ty; - // uv - positions[i++] = uvs.x0; - positions[i++] = uvs.y0; - // color - colors[i++] = color; - - // xy - positions[i++] = (a * w0 + c * h1 + tx); - positions[i++] = d * h1 + b * w0 + ty; - // uv - positions[i++] = uvs.x1; - positions[i++] = uvs.y1; - // color - colors[i++] = color; - - // xy - positions[i++] = a * w0 + c * h0 + tx; - positions[i++] = d * h0 + b * w0 + ty; - // uv - positions[i++] = uvs.x2; - positions[i++] = uvs.y2; - // color - colors[i++] = color; - - // xy - positions[i++] = a * w1 + c * h0 + tx; - positions[i++] = d * h0 + b * w1 + ty; - // uv - positions[i++] = uvs.x3; - positions[i++] = uvs.y3; - // color - colors[i++] = color; - - // increment the batchsize - this.sprites[this.currentBatchSize++] = sprite; -}; - -/** -* Renders the content and empties the current batch. -* -* @method flush -*/ -PIXI.WebGLSpriteBatch.prototype.flush = function() -{ - // If the batch is length 0 then return as there is nothing to draw - if (this.currentBatchSize === 0) - { - return; - } - - var gl = this.gl; - var shader; - - if (this.dirty) - { - this.dirty = false; - - // bind the main texture - gl.activeTexture(gl.TEXTURE0); - - // bind the buffers - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - - shader = this.defaultShader.shaders[gl.id]; - - // this is the same for each shader? - var stride = this.vertSize * 4; - gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, stride, 0); - gl.vertexAttribPointer(shader.aTextureCoord, 2, gl.FLOAT, false, stride, 2 * 4); - - // color attributes will be interpreted as unsigned bytes and normalized - gl.vertexAttribPointer(shader.colorAttribute, 4, gl.UNSIGNED_BYTE, true, stride, 4 * 4); - } - - // upload the verts to the buffer - if (this.currentBatchSize > (this.size * 0.5)) - { - gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.vertices); - } - else - { - var view = this.positions.subarray(0, this.currentBatchSize * 4 * this.vertSize); - gl.bufferSubData(gl.ARRAY_BUFFER, 0, view); - } - - var nextTexture, nextBlendMode, nextShader; - var batchSize = 0; - var start = 0; - - var currentBaseTexture = null; - var currentBlendMode = this.renderSession.blendModeManager.currentBlendMode; - var currentShader = null; - - var blendSwap = false; - var shaderSwap = false; - var sprite; - - for (var i = 0, j = this.currentBatchSize; i < j; i++) { - - sprite = this.sprites[i]; - - if (sprite.tilingTexture) - { - nextTexture = sprite.tilingTexture.baseTexture; - } - else - { - nextTexture = sprite.texture.baseTexture; - } - - nextBlendMode = sprite.blendMode; - nextShader = sprite.shader || this.defaultShader; - - blendSwap = currentBlendMode !== nextBlendMode; - shaderSwap = currentShader !== nextShader; // should I use _UIDS??? - - var skip = nextTexture.skipRender; - - if (skip && sprite.children.length > 0) - { - skip = false; - } - - if ((currentBaseTexture !== nextTexture && !skip) || blendSwap || shaderSwap) - { - this.renderBatch(currentBaseTexture, batchSize, start); - - start = i; - batchSize = 0; - currentBaseTexture = nextTexture; - - if (blendSwap) - { - currentBlendMode = nextBlendMode; - this.renderSession.blendModeManager.setBlendMode(currentBlendMode); - } - - if (shaderSwap) - { - currentShader = nextShader; - - shader = currentShader.shaders[gl.id]; - - if (!shader) - { - shader = new PIXI.PixiShader(gl); - - shader.fragmentSrc = currentShader.fragmentSrc; - shader.uniforms = currentShader.uniforms; - shader.init(); - - currentShader.shaders[gl.id] = shader; - } - - // set shader function??? - this.renderSession.shaderManager.setShader(shader); - - if (shader.dirty) - { - shader.syncUniforms(); - } - - // both these only need to be set if they are changing.. - // set the projection - var projection = this.renderSession.projection; - gl.uniform2f(shader.projectionVector, projection.x, projection.y); - - // TODO - this is temporary! - var offsetVector = this.renderSession.offset; - gl.uniform2f(shader.offsetVector, offsetVector.x, offsetVector.y); - - // set the pointers - } - } - - batchSize++; - } - - this.renderBatch(currentBaseTexture, batchSize, start); - - // then reset the batch! - this.currentBatchSize = 0; -}; - -/** -* @method renderBatch -* @param texture {Texture} -* @param size {Number} -* @param startIndex {Number} -*/ -PIXI.WebGLSpriteBatch.prototype.renderBatch = function(texture, size, startIndex) -{ - if (size === 0) - { - return; - } - - var gl = this.gl; - - // check if a texture is dirty.. - if (texture._dirty[gl.id]) - { - if (!this.renderSession.renderer.updateTexture(texture)) - { - // If updateTexture returns false then we cannot render it, so bail out now - return; - } - } - else - { - // bind the current texture - gl.bindTexture(gl.TEXTURE_2D, texture._glTextures[gl.id]); - } - - // now draw those suckas! - gl.drawElements(gl.TRIANGLES, size * 6, gl.UNSIGNED_SHORT, startIndex * 6 * 2); - - // increment the draw count - this.renderSession.drawCount++; -}; - -/** -* @method stop -*/ -PIXI.WebGLSpriteBatch.prototype.stop = function() -{ - this.flush(); - this.dirty = true; -}; - -/** -* @method start -*/ -PIXI.WebGLSpriteBatch.prototype.start = function() -{ - this.dirty = true; -}; - -/** -* Destroys the SpriteBatch. -* -* @method destroy -*/ -PIXI.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; -}; -/** - * @author Mat Groves - * - * Big thanks to the very clever Matt DesLauriers https://github.com/mattdesl/ - * 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 - */ - -/** -* @class WebGLFastSpriteBatch -* @constructor -*/ -PIXI.WebGLFastSpriteBatch = function(gl) -{ - /** - * @property vertSize - * @type Number - */ - this.vertSize = 10; - - /** - * @property maxSize - * @type Number - */ - this.maxSize = 6000;//Math.pow(2, 16) / this.vertSize; - - /** - * @property size - * @type Number - */ - this.size = this.maxSize; - - //the total number of floats in our batch - var numVerts = this.size * 4 * this.vertSize; - - //the total number of indices in our batch - var numIndices = this.maxSize * 6; - - /** - * Vertex data - * @property vertices - * @type Float32Array - */ - this.vertices = new PIXI.Float32Array(numVerts); - - /** - * Index data - * @property indices - * @type Uint16Array - */ - this.indices = new PIXI.Uint16Array(numIndices); - - /** - * @property vertexBuffer - * @type Object - */ - this.vertexBuffer = null; - - /** - * @property indexBuffer - * @type Object - */ - this.indexBuffer = null; - - /** - * @property lastIndexCount - * @type Number - */ - this.lastIndexCount = 0; - - for (var i=0, j=0; i < numIndices; i += 6, j += 4) - { - this.indices[i + 0] = j + 0; - this.indices[i + 1] = j + 1; - this.indices[i + 2] = j + 2; - this.indices[i + 3] = j + 0; - this.indices[i + 4] = j + 2; - this.indices[i + 5] = j + 3; - } - - /** - * @property drawing - * @type Boolean - */ - this.drawing = false; - - /** - * @property currentBatchSize - * @type Number - */ - this.currentBatchSize = 0; - - /** - * @property currentBaseTexture - * @type BaseTexture - */ - this.currentBaseTexture = null; - - /** - * @property currentBlendMode - * @type Number - */ - this.currentBlendMode = 0; - - /** - * @property renderSession - * @type Object - */ - this.renderSession = null; - - /** - * @property shader - * @type Object - */ - this.shader = null; - - /** - * @property matrix - * @type Matrix - */ - this.matrix = null; - - this.setContext(gl); -}; - -PIXI.WebGLFastSpriteBatch.prototype.constructor = PIXI.WebGLFastSpriteBatch; - -/** - * Sets the WebGL Context. - * - * @method setContext - * @param gl {WebGLContext} the current WebGL drawing context - */ -PIXI.WebGLFastSpriteBatch.prototype.setContext = function(gl) -{ - this.gl = gl; - - // create a couple of buffers - this.vertexBuffer = gl.createBuffer(); - this.indexBuffer = gl.createBuffer(); - - // 65535 is max index, so 65535 / 6 = 10922. - - //upload the index data - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices, gl.STATIC_DRAW); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.vertices, gl.DYNAMIC_DRAW); -}; - -/** - * @method begin - * @param spriteBatch {WebGLSpriteBatch} - * @param renderSession {Object} - */ -PIXI.WebGLFastSpriteBatch.prototype.begin = function(spriteBatch, renderSession) -{ - this.renderSession = renderSession; - this.shader = this.renderSession.shaderManager.fastShader; - - this.matrix = spriteBatch.worldTransform.toArray(true); - - this.start(); -}; - -/** - * @method end - */ -PIXI.WebGLFastSpriteBatch.prototype.end = function() -{ - this.flush(); -}; - -/** - * @method render - * @param spriteBatch {WebGLSpriteBatch} - */ -PIXI.WebGLFastSpriteBatch.prototype.render = function(spriteBatch) -{ - var children = spriteBatch.children; - var sprite = children[0]; - - // if the uvs have not updated then no point rendering just yet! - - // check texture. - if(!sprite.texture._uvs)return; - - this.currentBaseTexture = sprite.texture.baseTexture; - - // check blend mode - if(sprite.blendMode !== this.renderSession.blendModeManager.currentBlendMode) - { - this.flush(); - this.renderSession.blendModeManager.setBlendMode(sprite.blendMode); - } - - for(var i=0,j= children.length; i= this.size) - { - this.flush(); - } -}; - -/** - * @method flush - */ -PIXI.WebGLFastSpriteBatch.prototype.flush = function() -{ - // If the batch is length 0 then return as there is nothing to draw - if (this.currentBatchSize===0)return; - - var gl = this.gl; - - // bind the current texture - - if(!this.currentBaseTexture._glTextures[gl.id])this.renderSession.renderer.updateTexture(this.currentBaseTexture, gl); - - gl.bindTexture(gl.TEXTURE_2D, this.currentBaseTexture._glTextures[gl.id]); - - // upload the verts to the buffer - - if(this.currentBatchSize > ( this.size * 0.5 ) ) - { - gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.vertices); - } - else - { - var view = this.vertices.subarray(0, this.currentBatchSize * 4 * this.vertSize); - - gl.bufferSubData(gl.ARRAY_BUFFER, 0, view); - } - - // now draw those suckas! - gl.drawElements(gl.TRIANGLES, this.currentBatchSize * 6, gl.UNSIGNED_SHORT, 0); - - // then reset the batch! - this.currentBatchSize = 0; - - // increment the draw count - this.renderSession.drawCount++; -}; - - -/** - * @method stop - */ -PIXI.WebGLFastSpriteBatch.prototype.stop = function() -{ - this.flush(); -}; - -/** - * @method start - */ -PIXI.WebGLFastSpriteBatch.prototype.start = function() -{ - var gl = this.gl; - - // bind the main texture - gl.activeTexture(gl.TEXTURE0); - - // bind the buffers - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - - // set the projection - var projection = this.renderSession.projection; - gl.uniform2f(this.shader.projectionVector, projection.x, projection.y); - - // set the matrix - gl.uniformMatrix3fv(this.shader.uMatrix, false, this.matrix); - - // set the pointers - var stride = this.vertSize * 4; - - gl.vertexAttribPointer(this.shader.aVertexPosition, 2, gl.FLOAT, false, stride, 0); - gl.vertexAttribPointer(this.shader.aPositionCoord, 2, gl.FLOAT, false, stride, 2 * 4); - gl.vertexAttribPointer(this.shader.aScale, 2, gl.FLOAT, false, stride, 4 * 4); - gl.vertexAttribPointer(this.shader.aRotation, 1, gl.FLOAT, false, stride, 6 * 4); - gl.vertexAttribPointer(this.shader.aTextureCoord, 2, gl.FLOAT, false, stride, 7 * 4); - gl.vertexAttribPointer(this.shader.colorAttribute, 1, gl.FLOAT, false, stride, 9 * 4); - -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class WebGLFilterManager -* @constructor -*/ -PIXI.WebGLFilterManager = function() -{ - /** - * @property filterStack - * @type Array - */ - this.filterStack = []; - - /** - * @property offsetX - * @type Number - */ - this.offsetX = 0; - - /** - * @property offsetY - * @type Number - */ - this.offsetY = 0; -}; - -PIXI.WebGLFilterManager.prototype.constructor = PIXI.WebGLFilterManager; - -/** -* Initialises the context and the properties. -* -* @method setContext -* @param gl {WebGLContext} the current WebGL drawing context -*/ -PIXI.WebGLFilterManager.prototype.setContext = function(gl) -{ - this.gl = gl; - this.texturePool = []; - - this.initShaderBuffers(); -}; - -/** -* @method begin -* @param renderSession {RenderSession} -* @param buffer {ArrayBuffer} -*/ -PIXI.WebGLFilterManager.prototype.begin = function(renderSession, buffer) -{ - this.renderSession = renderSession; - this.defaultShader = renderSession.shaderManager.defaultShader; - - var projection = this.renderSession.projection; - this.width = projection.x * 2; - this.height = -projection.y * 2; - this.buffer = buffer; -}; - -/** -* Applies the filter and adds it to the current filter stack. -* -* @method pushFilter -* @param filterBlock {Object} the filter that will be pushed to the current filter stack -*/ -PIXI.WebGLFilterManager.prototype.pushFilter = function(filterBlock) -{ - var gl = this.gl; - - var projection = this.renderSession.projection; - var offset = this.renderSession.offset; - - filterBlock._filterArea = filterBlock.target.filterArea || filterBlock.target.getBounds(); - - // >>> modify by nextht - filterBlock._previous_stencil_mgr = this.renderSession.stencilManager; - this.renderSession.stencilManager = new PIXI.WebGLStencilManager(); - this.renderSession.stencilManager.setContext(gl); - gl.disable(gl.STENCIL_TEST); - // <<< modify by nextht - - // filter program - // OPTIMISATION - the first filter is free if its a simple color change? - this.filterStack.push(filterBlock); - - var filter = filterBlock.filterPasses[0]; - - this.offsetX += filterBlock._filterArea.x; - this.offsetY += filterBlock._filterArea.y; - - var texture = this.texturePool.pop(); - if(!texture) - { - texture = new PIXI.FilterTexture(this.gl, this.width * this.renderSession.resolution, this.height * this.renderSession.resolution); - } - else - { - texture.resize(this.width * this.renderSession.resolution, this.height * this.renderSession.resolution); - } - - gl.bindTexture(gl.TEXTURE_2D, texture.texture); - - var filterArea = filterBlock._filterArea;// filterBlock.target.getBounds();///filterBlock.target.filterArea; - - var padding = filter.padding; - filterArea.x -= padding; - filterArea.y -= padding; - filterArea.width += padding * 2; - filterArea.height += padding * 2; - - // cap filter to screen size.. - if(filterArea.x < 0)filterArea.x = 0; - if(filterArea.width > this.width)filterArea.width = this.width; - if(filterArea.y < 0)filterArea.y = 0; - if(filterArea.height > this.height)filterArea.height = this.height; - - //gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, filterArea.width, filterArea.height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); - gl.bindFramebuffer(gl.FRAMEBUFFER, texture.frameBuffer); - - // set view port - gl.viewport(0, 0, filterArea.width * this.renderSession.resolution, filterArea.height * this.renderSession.resolution); - - projection.x = filterArea.width/2; - projection.y = -filterArea.height/2; - - offset.x = -filterArea.x; - offset.y = -filterArea.y; - - // update projection - // now restore the regular shader.. - // this.renderSession.shaderManager.setShader(this.defaultShader); - //gl.uniform2f(this.defaultShader.projectionVector, filterArea.width/2, -filterArea.height/2); - //gl.uniform2f(this.defaultShader.offsetVector, -filterArea.x, -filterArea.y); - - gl.colorMask(true, true, true, true); - gl.clearColor(0,0,0, 0); - gl.clear(gl.COLOR_BUFFER_BIT); - - filterBlock._glFilterTexture = texture; - -}; - -/** -* Removes the last filter from the filter stack and doesn't return it. -* -* @method popFilter -*/ -PIXI.WebGLFilterManager.prototype.popFilter = function() -{ - var gl = this.gl; - var filterBlock = this.filterStack.pop(); - var filterArea = filterBlock._filterArea; - var texture = filterBlock._glFilterTexture; - var projection = this.renderSession.projection; - var offset = this.renderSession.offset; - - if(filterBlock.filterPasses.length > 1) - { - gl.viewport(0, 0, filterArea.width * this.renderSession.resolution, filterArea.height * this.renderSession.resolution); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - - this.vertexArray[0] = 0; - this.vertexArray[1] = filterArea.height; - - this.vertexArray[2] = filterArea.width; - this.vertexArray[3] = filterArea.height; - - this.vertexArray[4] = 0; - this.vertexArray[5] = 0; - - this.vertexArray[6] = filterArea.width; - this.vertexArray[7] = 0; - - gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.vertexArray); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.uvBuffer); - // now set the uvs.. - this.uvArray[2] = filterArea.width/this.width; - this.uvArray[5] = filterArea.height/this.height; - this.uvArray[6] = filterArea.width/this.width; - this.uvArray[7] = filterArea.height/this.height; - - gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.uvArray); - - var inputTexture = texture; - var outputTexture = this.texturePool.pop(); - if(!outputTexture)outputTexture = new PIXI.FilterTexture(this.gl, this.width * this.renderSession.resolution, this.height * this.renderSession.resolution); - outputTexture.resize(this.width * this.renderSession.resolution, this.height * this.renderSession.resolution); - - // need to clear this FBO as it may have some left over elements from a previous filter. - gl.bindFramebuffer(gl.FRAMEBUFFER, outputTexture.frameBuffer ); - gl.clear(gl.COLOR_BUFFER_BIT); - - gl.disable(gl.BLEND); - - for (var i = 0; i < filterBlock.filterPasses.length-1; i++) - { - var filterPass = filterBlock.filterPasses[i]; - - gl.bindFramebuffer(gl.FRAMEBUFFER, outputTexture.frameBuffer ); - - // set texture - gl.activeTexture(gl.TEXTURE0); - gl.bindTexture(gl.TEXTURE_2D, inputTexture.texture); - - // draw texture.. - //filterPass.applyFilterPass(filterArea.width, filterArea.height); - this.applyFilterPass(filterPass, filterArea, filterArea.width, filterArea.height); - - // swap the textures.. - var temp = inputTexture; - inputTexture = outputTexture; - outputTexture = temp; - } - - gl.enable(gl.BLEND); - - texture = inputTexture; - this.texturePool.push(outputTexture); - } - - var filter = filterBlock.filterPasses[filterBlock.filterPasses.length-1]; - - this.offsetX -= filterArea.x; - this.offsetY -= filterArea.y; - - var sizeX = this.width; - var sizeY = this.height; - - var offsetX = 0; - var offsetY = 0; - - var buffer = this.buffer; - - // time to render the filters texture to the previous scene - if(this.filterStack.length === 0) - { - gl.colorMask(true, true, true, true);//this.transparent); - } - else - { - var currentFilter = this.filterStack[this.filterStack.length-1]; - filterArea = currentFilter._filterArea; - - sizeX = filterArea.width; - sizeY = filterArea.height; - - offsetX = filterArea.x; - offsetY = filterArea.y; - - buffer = currentFilter._glFilterTexture.frameBuffer; - } - - // TODO need to remove these global elements.. - projection.x = sizeX/2; - projection.y = -sizeY/2; - - offset.x = offsetX; - offset.y = offsetY; - - filterArea = filterBlock._filterArea; - - var x = filterArea.x-offsetX; - var y = filterArea.y-offsetY; - - // update the buffers.. - // make sure to flip the y! - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - - this.vertexArray[0] = x; - this.vertexArray[1] = y + filterArea.height; - - this.vertexArray[2] = x + filterArea.width; - this.vertexArray[3] = y + filterArea.height; - - this.vertexArray[4] = x; - this.vertexArray[5] = y; - - this.vertexArray[6] = x + filterArea.width; - this.vertexArray[7] = y; - - gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.vertexArray); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.uvBuffer); - - this.uvArray[2] = filterArea.width/this.width; - this.uvArray[5] = filterArea.height/this.height; - this.uvArray[6] = filterArea.width/this.width; - this.uvArray[7] = filterArea.height/this.height; - - gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.uvArray); - - gl.viewport(0, 0, sizeX * this.renderSession.resolution, sizeY * this.renderSession.resolution); - - // bind the buffer - gl.bindFramebuffer(gl.FRAMEBUFFER, buffer ); - - // set the blend mode! - //gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA) - - // set texture - gl.activeTexture(gl.TEXTURE0); - gl.bindTexture(gl.TEXTURE_2D, texture.texture); - - // >>> modify by nextht - if (this.renderSession.stencilManager) { - this.renderSession.stencilManager.destroy(); - } - this.renderSession.stencilManager = filterBlock._previous_stencil_mgr; - filterBlock._previous_stencil_mgr = null; - if (this.renderSession.stencilManager.count > 0) { - gl.enable(gl.STENCIL_TEST); - } - else { - gl.disable(gl.STENCIL_TEST); - } - // <<< modify by nextht - - // apply! - this.applyFilterPass(filter, filterArea, sizeX, sizeY); - - // now restore the regular shader.. should happen automatically now.. - // this.renderSession.shaderManager.setShader(this.defaultShader); - // gl.uniform2f(this.defaultShader.projectionVector, sizeX/2, -sizeY/2); - // gl.uniform2f(this.defaultShader.offsetVector, -offsetX, -offsetY); - - // return the texture to the pool - this.texturePool.push(texture); - filterBlock._glFilterTexture = null; -}; - - -/** -* Applies the filter to the specified area. -* -* @method applyFilterPass -* @param filter {AbstractFilter} the filter that needs to be applied -* @param filterArea {Texture} TODO - might need an update -* @param width {Number} the horizontal range of the filter -* @param height {Number} the vertical range of the filter -*/ -PIXI.WebGLFilterManager.prototype.applyFilterPass = function(filter, filterArea, width, height) -{ - // use program - var gl = this.gl; - var shader = filter.shaders[gl.id]; - - if(!shader) - { - shader = new PIXI.PixiShader(gl); - - shader.fragmentSrc = filter.fragmentSrc; - shader.uniforms = filter.uniforms; - shader.init(); - - filter.shaders[gl.id] = shader; - } - - // set the shader - this.renderSession.shaderManager.setShader(shader); - -// gl.useProgram(shader.program); - - gl.uniform2f(shader.projectionVector, width/2, -height/2); - gl.uniform2f(shader.offsetVector, 0,0); - - if(filter.uniforms.dimensions) - { - filter.uniforms.dimensions.value[0] = this.width;//width; - filter.uniforms.dimensions.value[1] = this.height;//height; - filter.uniforms.dimensions.value[2] = this.vertexArray[0]; - filter.uniforms.dimensions.value[3] = this.vertexArray[5];//filterArea.height; - } - - shader.syncUniforms(); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 0, 0); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.uvBuffer); - gl.vertexAttribPointer(shader.aTextureCoord, 2, gl.FLOAT, false, 0, 0); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.colorBuffer); - gl.vertexAttribPointer(shader.colorAttribute, 2, gl.FLOAT, false, 0, 0); - - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - - // draw the filter... - gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); - - this.renderSession.drawCount++; -}; - -/** -* Initialises the shader buffers. -* -* @method initShaderBuffers -*/ -PIXI.WebGLFilterManager.prototype.initShaderBuffers = function() -{ - var gl = this.gl; - - // create some buffers - this.vertexBuffer = gl.createBuffer(); - this.uvBuffer = gl.createBuffer(); - this.colorBuffer = gl.createBuffer(); - this.indexBuffer = gl.createBuffer(); - - // bind and upload the vertexs.. - // keep a reference to the vertexFloatData.. - this.vertexArray = new PIXI.Float32Array([0.0, 0.0, - 1.0, 0.0, - 0.0, 1.0, - 1.0, 1.0]); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.vertexArray, gl.STATIC_DRAW); - - // bind and upload the uv buffer - this.uvArray = new PIXI.Float32Array([0.0, 0.0, - 1.0, 0.0, - 0.0, 1.0, - 1.0, 1.0]); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.uvBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.uvArray, gl.STATIC_DRAW); - - this.colorArray = new PIXI.Float32Array([1.0, 0xFFFFFF, - 1.0, 0xFFFFFF, - 1.0, 0xFFFFFF, - 1.0, 0xFFFFFF]); - - gl.bindBuffer(gl.ARRAY_BUFFER, this.colorBuffer); - gl.bufferData(gl.ARRAY_BUFFER, this.colorArray, gl.STATIC_DRAW); - - // bind and upload the index - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array([0, 1, 2, 1, 3, 2]), gl.STATIC_DRAW); - -}; - -/** -* Destroys the filter and removes it from the filter stack. -* -* @method destroy -*/ -PIXI.WebGLFilterManager.prototype.destroy = function() -{ - var gl = this.gl; - - this.filterStack = null; - - this.offsetX = 0; - this.offsetY = 0; - - // destroy textures - for (var i = 0; i < this.texturePool.length; i++) { - this.texturePool[i].destroy(); - } - - this.texturePool = null; - - //destroy buffers.. - gl.deleteBuffer(this.vertexBuffer); - gl.deleteBuffer(this.uvBuffer); - gl.deleteBuffer(this.colorBuffer); - gl.deleteBuffer(this.indexBuffer); -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** -* @class FilterTexture -* @constructor -* @param gl {WebGLContext} the current WebGL drawing context -* @param width {Number} the horizontal range of the filter -* @param height {Number} the vertical range of the filter -* @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values -*/ -PIXI.FilterTexture = function(gl, width, height, scaleMode) -{ - /** - * @property gl - * @type WebGLContext - */ - this.gl = gl; - - // next time to create a frame buffer and texture - - /** - * @property frameBuffer - * @type Any - */ - this.frameBuffer = gl.createFramebuffer(); - - /** - * @property texture - * @type Any - */ - this.texture = gl.createTexture(); - - /** - * @property scaleMode - * @type Number - */ - scaleMode = scaleMode || PIXI.scaleModes.DEFAULT; - - gl.bindTexture(gl.TEXTURE_2D, this.texture); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR : gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR : gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - gl.bindFramebuffer(gl.FRAMEBUFFER, this.frameBuffer ); - - gl.bindFramebuffer(gl.FRAMEBUFFER, this.frameBuffer ); - gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.texture, 0); - - // required for masking a mask?? - this.renderBuffer = gl.createRenderbuffer(); - gl.bindRenderbuffer(gl.RENDERBUFFER, this.renderBuffer); - gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, this.renderBuffer); - - this.resize(width, height); -}; - -PIXI.FilterTexture.prototype.constructor = PIXI.FilterTexture; - -/** -* Clears the filter texture. -* -* @method clear -*/ -PIXI.FilterTexture.prototype.clear = function() -{ - var gl = this.gl; - - gl.clearColor(0,0,0, 0); - gl.clear(gl.COLOR_BUFFER_BIT); -}; - -/** - * Resizes the texture to the specified width and height - * - * @method resize - * @param width {Number} the new width of the texture - * @param height {Number} the new height of the texture - */ -PIXI.FilterTexture.prototype.resize = function(width, height) -{ - if(this.width === width && this.height === height) return; - - this.width = width; - this.height = height; - - var gl = this.gl; - - gl.bindTexture(gl.TEXTURE_2D, this.texture); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width , height , 0, gl.RGBA, gl.UNSIGNED_BYTE, null); - // update the stencil buffer width and height - gl.bindRenderbuffer(gl.RENDERBUFFER, this.renderBuffer); - gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, width , height ); -}; - -/** -* Destroys the filter texture. -* -* @method destroy -*/ -PIXI.FilterTexture.prototype.destroy = function() -{ - var gl = this.gl; - gl.deleteFramebuffer( this.frameBuffer ); - gl.deleteTexture( this.texture ); - - this.frameBuffer = null; - this.texture = null; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * Creates a Canvas element of the given size. - * - * @class CanvasBuffer - * @constructor - * @param width {Number} the width for the newly created canvas - * @param height {Number} the height for the newly created canvas - */ -PIXI.CanvasBuffer = function(width, height) -{ - /** - * The width of the Canvas in pixels. - * - * @property width - * @type Number - */ - this.width = width; - - /** - * The height of the Canvas in pixels. - * - * @property height - * @type Number - */ - this.height = height; - - /** - * The Canvas object that belongs to this CanvasBuffer. - * - * @property canvas - * @type HTMLCanvasElement - */ - this.canvas = PIXI.CanvasPool.create(this, this.width, this.height); - - /** - * A CanvasRenderingContext2D object representing a two-dimensional rendering context. - * - * @property context - * @type CanvasRenderingContext2D - */ - this.context = this.canvas.getContext("2d"); - - this.canvas.width = width; - this.canvas.height = height; -}; - -PIXI.CanvasBuffer.prototype.constructor = PIXI.CanvasBuffer; - -/** - * Clears the canvas that was created by the CanvasBuffer class. - * - * @method clear - * @private - */ -PIXI.CanvasBuffer.prototype.clear = function() -{ - this.context.setTransform(1, 0, 0, 1, 0, 0); - this.context.clearRect(0,0, this.width, this.height); -}; - -/** - * Resizes the canvas to the specified width and height. - * - * @method resize - * @param width {Number} the new width of the canvas - * @param height {Number} the new height of the canvas - */ -PIXI.CanvasBuffer.prototype.resize = function(width, height) -{ - this.width = this.canvas.width = width; - this.height = this.canvas.height = height; -}; - -/** - * Frees the canvas up for use again. - * - * @method destroy - */ -PIXI.CanvasBuffer.prototype.destroy = function() -{ - PIXI.CanvasPool.remove(this); -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * A set of functions used to handle masking. - * - * @class CanvasMaskManager - * @constructor - */ -PIXI.CanvasMaskManager = function() -{ -}; - -PIXI.CanvasMaskManager.prototype.constructor = PIXI.CanvasMaskManager; - -/** - * This method adds it to the current stack of masks. - * - * @method pushMask - * @param maskData {Object} the maskData that will be pushed - * @param renderSession {Object} The renderSession whose context will be used for this mask manager. - */ -PIXI.CanvasMaskManager.prototype.pushMask = function(maskData, renderSession) { - - var context = renderSession.context; - - context.save(); - - var cacheAlpha = maskData.alpha; - var transform = maskData.worldTransform; - - var resolution = renderSession.resolution; - - context.setTransform(transform.a * resolution, - transform.b * resolution, - transform.c * resolution, - transform.d * resolution, - transform.tx * resolution, - transform.ty * resolution); - - PIXI.CanvasGraphics.renderGraphicsMask(maskData, context); - - context.clip(); - - maskData.worldAlpha = cacheAlpha; -}; - -/** - * Restores the current drawing context to the state it was before the mask was applied. - * - * @method popMask - * @param renderSession {Object} The renderSession whose context will be used for this mask manager. - */ -PIXI.CanvasMaskManager.prototype.popMask = function(renderSession) -{ - renderSession.context.restore(); -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * Utility methods for Sprite/Texture tinting. - * - * @class CanvasTinter - * @static - */ -PIXI.CanvasTinter = function() {}; - -/** - * Basically this method just needs a sprite and a color and tints the sprite with the given color. - * - * @method getTintedTexture - * @static - * @param sprite {Sprite} the sprite to tint - * @param color {Number} the color to use to tint the sprite with - * @return {HTMLCanvasElement} The tinted canvas - */ -PIXI.CanvasTinter.getTintedTexture = function(sprite, color) -{ - var canvas = sprite.tintedTexture || PIXI.CanvasPool.create(this); - - PIXI.CanvasTinter.tintMethod(sprite.texture, color, canvas); - - return canvas; -}; - -/** - * Tint a texture using the "multiply" operation. - * - * @method tintWithMultiply - * @static - * @param texture {Texture} the texture to tint - * @param color {Number} the color to use to tint the sprite with - * @param canvas {HTMLCanvasElement} the current canvas - */ -PIXI.CanvasTinter.tintWithMultiply = function(texture, color, canvas) -{ - var context = canvas.getContext("2d"); - - var crop = texture.crop; - - if (canvas.width !== crop.width || canvas.height !== crop.height) - { - canvas.width = crop.width; - canvas.height = crop.height; - } - - context.clearRect(0, 0, crop.width, crop.height); - - context.fillStyle = "#" + ("00000" + (color | 0).toString(16)).substr(-6); - context.fillRect(0, 0, crop.width, crop.height); - - context.globalCompositeOperation = "multiply"; - context.drawImage(texture.baseTexture.source, crop.x, crop.y, crop.width, crop.height, 0, 0, crop.width, crop.height); - - context.globalCompositeOperation = "destination-atop"; - context.drawImage(texture.baseTexture.source, crop.x, crop.y, crop.width, crop.height, 0, 0, crop.width, crop.height); - -}; - -/** - * Tint a texture pixel per pixel. - * - * @method tintPerPixel - * @static - * @param texture {Texture} the texture to tint - * @param color {Number} the color to use to tint the sprite with - * @param canvas {HTMLCanvasElement} the current canvas - */ -PIXI.CanvasTinter.tintWithPerPixel = function(texture, color, canvas) -{ - var context = canvas.getContext("2d"); - - var crop = texture.crop; - - canvas.width = crop.width; - canvas.height = crop.height; - - context.globalCompositeOperation = "copy"; - - context.drawImage(texture.baseTexture.source, crop.x, crop.y, crop.width, crop.height, 0, 0, crop.width, crop.height); - - var rgbValues = PIXI.hex2rgb(color); - var r = rgbValues[0], g = rgbValues[1], b = rgbValues[2]; - - var pixelData = context.getImageData(0, 0, crop.width, crop.height); - - var pixels = pixelData.data; - - for (var i = 0; i < pixels.length; i += 4) - { - pixels[i + 0] *= r; - pixels[i + 1] *= g; - pixels[i + 2] *= b; - - if (!PIXI.CanvasTinter.canHandleAlpha) - { - var alpha = pixels[i + 3]; - - pixels[i + 0] /= 255 / alpha; - pixels[i + 1] /= 255 / alpha; - pixels[i + 2] /= 255 / alpha; - } - } - - context.putImageData(pixelData, 0, 0); -}; - -/** - * Checks if the browser correctly supports putImageData alpha channels. - * - * @method checkInverseAlpha - * @static - */ -PIXI.CanvasTinter.checkInverseAlpha = function() -{ - var canvas = new PIXI.CanvasBuffer(2, 1); - - canvas.context.fillStyle = "rgba(10, 20, 30, 0.5)"; - - // Draw a single pixel - canvas.context.fillRect(0, 0, 1, 1); - - // Get the color values - var s1 = canvas.context.getImageData(0, 0, 1, 1); - - if (s1 === null) - { - return false; - } - - // Plot them to x2 - canvas.context.putImageData(s1, 1, 0); - - // Get those values - var s2 = canvas.context.getImageData(1, 0, 1, 1); - - // Compare and return - return (s2.data[0] === s1.data[0] && s2.data[1] === s1.data[1] && s2.data[2] === s1.data[2] && s2.data[3] === s1.data[3]); -}; - -/** - * If the browser isn't capable of handling tinting with alpha this will be false. - * This property is only applicable if using tintWithPerPixel. - * - * @property canHandleAlpha - * @type Boolean - * @static - */ -PIXI.CanvasTinter.canHandleAlpha = PIXI.CanvasTinter.checkInverseAlpha(); - -/** - * Whether or not the Canvas BlendModes are supported, consequently the ability to tint using the multiply method. - * - * @property canUseMultiply - * @type Boolean - * @static - */ -PIXI.CanvasTinter.canUseMultiply = PIXI.canUseNewCanvasBlendModes(); - -/** - * The tinting method that will be used. - * - * @method tintMethod - * @static - */ -PIXI.CanvasTinter.tintMethod = PIXI.CanvasTinter.canUseMultiply ? PIXI.CanvasTinter.tintWithMultiply : PIXI.CanvasTinter.tintWithPerPixel; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * 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 :) - * - * @class CanvasRenderer - * @constructor - * @param game {Phaser.Game} A reference to the Phaser Game instance - */ -PIXI.CanvasRenderer = function (game) { - - /** - * @property {Phaser.Game} game - A reference to the Phaser Game instance. - */ - this.game = game; - - if (!PIXI.defaultRenderer) - { - PIXI.defaultRenderer = this; - } - - /** - * The renderer type. - * - * @property type - * @type Number - */ - this.type = PIXI.CANVAS_RENDERER; - - /** - * The resolution of the canvas. - * - * @property resolution - * @type Number - */ - this.resolution = game.resolution; - - /** - * This sets if the CanvasRenderer will clear the canvas or not before the new render pass. - * If the Stage is NOT transparent Pixi will use a canvas sized fillRect operation every frame to set the canvas background color. - * 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. - * - * @property clearBeforeRender - * @type Boolean - * @default - */ - this.clearBeforeRender = game.clearBeforeRender; - - /** - * Whether the render view is transparent - * - * @property transparent - * @type Boolean - */ - this.transparent = game.transparent; - - /** - * Whether the render view should be resized automatically - * - * @property autoResize - * @type Boolean - */ - this.autoResize = false; - - /** - * The width of the canvas view - * - * @property width - * @type Number - * @default 800 - */ - this.width = game.width * this.resolution; - - /** - * The height of the canvas view - * - * @property height - * @type Number - * @default 600 - */ - this.height = game.height * this.resolution; - - /** - * The canvas element that everything is drawn to. - * - * @property view - * @type HTMLCanvasElement - */ - this.view = game.canvas; - - /** - * The canvas 2d context that everything is drawn with - * @property context - * @type CanvasRenderingContext2D - */ - this.context = this.view.getContext("2d", { alpha: this.transparent } ); - - /** - * Boolean flag controlling canvas refresh. - * - * @property refresh - * @type Boolean - */ - this.refresh = true; - - /** - * Internal var. - * - * @property count - * @type Number - */ - this.count = 0; - - /** - * Instance of a PIXI.CanvasMaskManager, handles masking when using the canvas renderer - * @property CanvasMaskManager - * @type CanvasMaskManager - */ - this.maskManager = new PIXI.CanvasMaskManager(); - - /** - * The render session is just a bunch of parameter used for rendering - * @property renderSession - * @type Object - */ - this.renderSession = { - context: this.context, - maskManager: this.maskManager, - scaleMode: null, - smoothProperty: Phaser.Canvas.getSmoothingPrefix(this.context), - - /** - * If true Pixi will Math.floor() x/y values when rendering, stopping pixel interpolation. - * Handy for crisp pixel art and speed on legacy devices. - */ - roundPixels: false - }; - - this.mapBlendModes(); - - this.resize(this.width, this.height); - -}; - -// constructor -PIXI.CanvasRenderer.prototype.constructor = PIXI.CanvasRenderer; - -/** - * Renders the Stage to this canvas view - * - * @method render - * @param stage {Stage} the Stage element to be rendered - */ -PIXI.CanvasRenderer.prototype.render = function (stage) { - - this.context.setTransform(1, 0, 0, 1, 0, 0); - - this.context.globalAlpha = 1; - - this.renderSession.currentBlendMode = 0; - this.renderSession.shakeX = this.game.camera._shake.x; - this.renderSession.shakeY = this.game.camera._shake.y; - - this.context.globalCompositeOperation = 'source-over'; - - if (navigator.isCocoonJS && this.view.screencanvas) - { - this.context.fillStyle = "black"; - this.context.clear(); - } - - if (this.clearBeforeRender) - { - if (this.transparent) - { - this.context.clearRect(0, 0, this.width, this.height); - } - else - { - this.context.fillStyle = stage._bgColor.rgba; - this.context.fillRect(0, 0, this.width , this.height); - } - } - - this.renderDisplayObject(stage); - -}; - -/** - * Removes everything from the renderer and optionally removes the Canvas DOM element. - * - * @method destroy - * @param [removeView=true] {boolean} Removes the Canvas element from the DOM. - */ -PIXI.CanvasRenderer.prototype.destroy = function (removeView) { - - if (removeView === undefined) { removeView = true; } - - if (removeView && this.view.parent) - { - this.view.parent.removeChild(this.view); - } - - this.view = null; - this.context = null; - this.maskManager = null; - this.renderSession = null; - -}; - -/** - * Resizes the canvas view to the specified width and height - * - * @method resize - * @param width {Number} the new width of the canvas view - * @param height {Number} the new height of the canvas view - */ -PIXI.CanvasRenderer.prototype.resize = function (width, height) { - - this.width = width * this.resolution; - this.height = height * this.resolution; - - this.view.width = this.width; - this.view.height = this.height; - - if (this.autoResize) - { - this.view.style.width = this.width / this.resolution + "px"; - this.view.style.height = this.height / this.resolution + "px"; - } - - if (this.renderSession.smoothProperty) - { - this.context[this.renderSession.smoothProperty] = (this.renderSession.scaleMode === PIXI.scaleModes.LINEAR); - } - -}; - -/** - * Renders a display object - * - * @method renderDisplayObject - * @param displayObject {DisplayObject} The displayObject to render - * @param context {CanvasRenderingContext2D} the context 2d method of the canvas - * @param [matrix] {Matrix} Optional matrix to apply to the display object before rendering. - * @private - */ -PIXI.CanvasRenderer.prototype.renderDisplayObject = function (displayObject, context, matrix) { - - this.renderSession.context = context || this.context; - this.renderSession.resolution = this.resolution; - displayObject._renderCanvas(this.renderSession, matrix); - -}; - -/** - * Maps Pixi blend modes to canvas blend modes. - * - * @method mapBlendModes - * @private - */ -PIXI.CanvasRenderer.prototype.mapBlendModes = function () { - - if (!PIXI.blendModesCanvas) - { - var b = []; - var modes = PIXI.blendModes; - var useNew = PIXI.canUseNewCanvasBlendModes(); - - b[modes.NORMAL] = 'source-over'; - b[modes.ADD] = 'lighter'; - b[modes.MULTIPLY] = (useNew) ? 'multiply' : 'source-over'; - b[modes.SCREEN] = (useNew) ? 'screen' : 'source-over'; - b[modes.OVERLAY] = (useNew) ? 'overlay' : 'source-over'; - b[modes.DARKEN] = (useNew) ? 'darken' : 'source-over'; - b[modes.LIGHTEN] = (useNew) ? 'lighten' : 'source-over'; - b[modes.COLOR_DODGE] = (useNew) ? 'color-dodge' : 'source-over'; - b[modes.COLOR_BURN] = (useNew) ? 'color-burn' : 'source-over'; - b[modes.HARD_LIGHT] = (useNew) ? 'hard-light' : 'source-over'; - b[modes.SOFT_LIGHT] = (useNew) ? 'soft-light' : 'source-over'; - b[modes.DIFFERENCE] = (useNew) ? 'difference' : 'source-over'; - b[modes.EXCLUSION] = (useNew) ? 'exclusion' : 'source-over'; - b[modes.HUE] = (useNew) ? 'hue' : 'source-over'; - b[modes.SATURATION] = (useNew) ? 'saturation' : 'source-over'; - b[modes.COLOR] = (useNew) ? 'color' : 'source-over'; - b[modes.LUMINOSITY] = (useNew) ? 'luminosity' : 'source-over'; - - PIXI.blendModesCanvas = b; - } - -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * A texture stores the information that represents an image. All textures have a base texture. - * - * @class BaseTexture - * @uses EventTarget - * @constructor - * @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) -{ - /** - * The Resolution of the texture. - * - * @property resolution - * @type Number - */ - this.resolution = 1; - - /** - * [read-only] The width of the base texture set when the image has loaded - * - * @property width - * @type Number - * @readOnly - */ - this.width = 100; - - /** - * [read-only] The height of the base texture set when the image has loaded - * - * @property height - * @type Number - * @readOnly - */ - this.height = 100; - - /** - * The scale mode to apply when scaling this texture - * - * @property scaleMode - * @type {Number} - * @default PIXI.scaleModes.LINEAR - */ - this.scaleMode = scaleMode || PIXI.scaleModes.DEFAULT; - - /** - * [read-only] Set to true once the base texture has loaded - * - * @property hasLoaded - * @type Boolean - * @readOnly - */ - this.hasLoaded = false; - - /** - * The image source that is used to create the texture. - * - * @property source - * @type Image - */ - this.source = source; - - /** - * Controls if RGB channels should be pre-multiplied by Alpha (WebGL only) - * - * @property premultipliedAlpha - * @type Boolean - * @default true - */ - this.premultipliedAlpha = true; - - // used for webGL - - /** - * @property _glTextures - * @type Array - * @private - */ - this._glTextures = []; - - /** - * 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 - * - * @property mipmap - * @type {Boolean} - */ - this.mipmap = false; - - /** - * @property _dirty - * @type Array - * @private - */ - this._dirty = [true, true, true, true]; - - if (!source) - { - return; - } - - if ((this.source.complete || this.source.getContext) && this.source.width && this.source.height) - { - this.hasLoaded = true; - this.width = this.source.naturalWidth || this.source.width; - this.height = this.source.naturalHeight || this.source.height; - this.dirty(); - } - - /** - * A BaseTexture can be set to skip the rendering phase in the WebGL Sprite Batch. - * - * 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. - * - * @property skipRender - * @type Boolean - */ - this.skipRender = false; - - /** - * @property _powerOf2 - * @type Boolean - * @private - */ - this._powerOf2 = false; - -}; - -PIXI.BaseTexture.prototype.constructor = PIXI.BaseTexture; - -/** - * Forces this BaseTexture to be set as loaded, with the given width and height. - * Then calls BaseTexture.dirty. - * Important for when you don't want to modify the source object by forcing in `complete` or dimension properties it may not have. - * - * @method 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. - */ -PIXI.BaseTexture.prototype.forceLoaded = function(width, height) -{ - this.hasLoaded = true; - this.width = width; - this.height = height; - this.dirty(); -}; - -/** - * Destroys this base texture - * - * @method destroy - */ -PIXI.BaseTexture.prototype.destroy = function() -{ - if (this.source) - { - PIXI.CanvasPool.removeByCanvas(this.source); - } - - this.source = null; - - this.unloadFromGPU(); -}; - -/** - * Changes the source image of the texture - * - * @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) -{ - console.warn("PIXI.BaseTexture.updateSourceImage is deprecated. Use Phaser.Sprite.loadTexture instead."); -}; - -/** - * Sets all glTextures to be dirty. - * - * @method dirty - */ -PIXI.BaseTexture.prototype.dirty = function() -{ - for (var i = 0; i < this._glTextures.length; i++) - { - this._dirty[i] = true; - } -}; - -/** - * 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 unloadFromGPU - */ -PIXI.BaseTexture.prototype.unloadFromGPU = function() -{ - this.dirty(); - - // delete the webGL textures if any. - for (var i = this._glTextures.length - 1; i >= 0; i--) - { - var glTexture = this._glTextures[i]; - var gl = PIXI.glContexts[i]; - - if(gl && glTexture) - { - gl.deleteTexture(glTexture); - } - - } - - this._glTextures.length = 0; - - this.dirty(); -}; - -/** - * Helper function that creates a base texture from the given canvas element. - * - * @static - * @method fromCanvas - * @param canvas {Canvas} The canvas element source of the texture - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {BaseTexture} - */ -PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) -{ - if (canvas.width === 0) - { - canvas.width = 1; - } - - if (canvas.height === 0) - { - canvas.height = 1; - } - - return new PIXI.BaseTexture(canvas, scaleMode); -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * 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. - * Instead `Texture.valid` will be set to `false` (#1556) - * - * @type {boolean} - */ -PIXI.TextureSilentFail = false; - -/** - * 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. - * - * @class Texture - * @uses EventTarget - * @constructor - * @param baseTexture {BaseTexture} The base texture source to create the texture from - * @param frame {Rectangle} The rectangle frame of the texture to show - * @param [crop] {Rectangle} The area of original texture - * @param [trim] {Rectangle} Trimmed texture rectangle - */ -PIXI.Texture = function(baseTexture, frame, crop, trim) -{ - /** - * Does this Texture have any frame data assigned to it? - * - * @property noFrame - * @type Boolean - */ - this.noFrame = false; - - if (!frame) - { - this.noFrame = true; - frame = new PIXI.Rectangle(0,0,1,1); - } - - if (baseTexture instanceof PIXI.Texture) - { - baseTexture = baseTexture.baseTexture; - } - - /** - * The base texture that this texture uses. - * - * @property baseTexture - * @type BaseTexture - */ - this.baseTexture = baseTexture; - - /** - * The frame specifies the region of the base texture that this texture uses - * - * @property frame - * @type Rectangle - */ - this.frame = frame; - - /** - * The texture trim data. - * - * @property trim - * @type Rectangle - */ - this.trim = trim; - - /** - * This will let the renderer know if the texture is valid. If it's not then it cannot be rendered. - * - * @property valid - * @type Boolean - */ - this.valid = false; - - /** - * Is this a tiling texture? As used by the likes of a TilingSprite. - * - * @property isTiling - * @type Boolean - */ - this.isTiling = false; - - /** - * This will let a renderer know that a texture has been updated (used mainly for webGL uv updates) - * - * @property requiresUpdate - * @type Boolean - */ - this.requiresUpdate = false; - - /** - * This will let a renderer know that a tinted parent has updated its texture. - * - * @property requiresReTint - * @type Boolean - */ - this.requiresReTint = false; - - /** - * The WebGL UV data cache. - * - * @property _uvs - * @type Object - * @private - */ - this._uvs = null; - - /** - * The width of the Texture in pixels. - * - * @property width - * @type Number - */ - this.width = 0; - - /** - * The height of the Texture in pixels. - * - * @property height - * @type Number - */ - this.height = 0; - - /** - * 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) - * - * @property crop - * @type Rectangle - */ - this.crop = crop || new PIXI.Rectangle(0, 0, 1, 1); - - if (baseTexture.hasLoaded) - { - if (this.noFrame) frame = new PIXI.Rectangle(0, 0, baseTexture.width, baseTexture.height); - this.setFrame(frame); - } - -}; - -PIXI.Texture.prototype.constructor = PIXI.Texture; - -/** - * Called when the base texture is loaded - * - * @method onBaseTextureLoaded - * @private - */ -PIXI.Texture.prototype.onBaseTextureLoaded = function() -{ - var baseTexture = this.baseTexture; - - if (this.noFrame) - { - this.frame = new PIXI.Rectangle(0, 0, baseTexture.width, baseTexture.height); - } - - this.setFrame(this.frame); -}; - -/** - * Destroys this texture - * - * @method destroy - * @param destroyBase {Boolean} Whether to destroy the base texture as well - */ -PIXI.Texture.prototype.destroy = function(destroyBase) -{ - if (destroyBase) this.baseTexture.destroy(); - - this.valid = false; -}; - -/** - * Specifies the region of the baseTexture that this texture will use. - * - * @method setFrame - * @param frame {Rectangle} The frame of the texture to set it to - */ -PIXI.Texture.prototype.setFrame = function(frame) -{ - this.noFrame = false; - - this.frame = frame; - this.width = frame.width; - this.height = frame.height; - - this.crop.x = frame.x; - this.crop.y = frame.y; - this.crop.width = frame.width; - this.crop.height = frame.height; - - if (!this.trim && (frame.x + frame.width > this.baseTexture.width || frame.y + frame.height > this.baseTexture.height)) - { - if (!PIXI.TextureSilentFail) - { - throw new Error('Texture Error: frame does not fit inside the base Texture dimensions ' + this); - } - - this.valid = false; - return; - } - - this.valid = frame && frame.width && frame.height && this.baseTexture.source && this.baseTexture.hasLoaded; - - if (this.trim) - { - this.width = this.trim.width; - this.height = this.trim.height; - this.frame.width = this.trim.width; - this.frame.height = this.trim.height; - } - - if (this.valid) this._updateUvs(); - -}; - -/** - * Updates the internal WebGL UV cache. - * - * @method _updateUvs - * @private - */ -PIXI.Texture.prototype._updateUvs = function() -{ - if(!this._uvs)this._uvs = new PIXI.TextureUvs(); - - var frame = this.crop; - var tw = this.baseTexture.width; - var th = this.baseTexture.height; - - this._uvs.x0 = frame.x / tw; - this._uvs.y0 = frame.y / th; - - this._uvs.x1 = (frame.x + frame.width) / tw; - this._uvs.y1 = frame.y / th; - - this._uvs.x2 = (frame.x + frame.width) / tw; - this._uvs.y2 = (frame.y + frame.height) / th; - - this._uvs.x3 = frame.x / tw; - this._uvs.y3 = (frame.y + frame.height) / th; -}; - -/** - * Helper function that creates a new a Texture based on the given canvas element. - * - * @static - * @method fromCanvas - * @param canvas {Canvas} The canvas element source of the texture - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @return {Texture} - */ -PIXI.Texture.fromCanvas = function(canvas, scaleMode) -{ - var baseTexture = PIXI.BaseTexture.fromCanvas(canvas, scaleMode); - - return new PIXI.Texture(baseTexture); -}; - -PIXI.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; -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * A RenderTexture is a special texture that allows any Pixi display object to be rendered to it. - * - * __Hint__: All DisplayObjects (i.e. Sprites) that render to a RenderTexture should be preloaded otherwise black rectangles will be drawn instead. - * - * A RenderTexture takes a snapshot of any Display Object given to its render method. The position and rotation of the given Display Objects is ignored. For example: - * - * var renderTexture = new PIXI.RenderTexture(800, 600); - * var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); - * sprite.position.x = 800/2; - * sprite.position.y = 600/2; - * sprite.anchor.x = 0.5; - * sprite.anchor.y = 0.5; - * renderTexture.render(sprite); - * - * The Sprite in this case will be rendered to a position of 0,0. To render this sprite at its actual position a DisplayObjectContainer should be used: - * - * var doc = new PIXI.DisplayObjectContainer(); - * doc.addChild(sprite); - * renderTexture.render(doc); // Renders to center of renderTexture - * - * @class RenderTexture - * @extends Texture - * @constructor - * @param width {Number} The width of the render texture - * @param height {Number} The height of the render texture - * @param renderer {CanvasRenderer|WebGLRenderer} The renderer used for this RenderTexture - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values - * @param resolution {Number} The resolution of the texture being generated - */ -PIXI.RenderTexture = function(width, height, renderer, scaleMode, resolution) -{ - /** - * The with of the render texture - * - * @property width - * @type Number - */ - this.width = width || 100; - - /** - * The height of the render texture - * - * @property height - * @type Number - */ - this.height = height || 100; - - /** - * The Resolution of the texture. - * - * @property resolution - * @type Number - */ - this.resolution = resolution || 1; - - /** - * The framing rectangle of the render texture - * - * @property frame - * @type Rectangle - */ - this.frame = new PIXI.Rectangle(0, 0, this.width * this.resolution, this.height * this.resolution); - - /** - * 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) - * - * @property crop - * @type Rectangle - */ - this.crop = new PIXI.Rectangle(0, 0, this.width * this.resolution, this.height * this.resolution); - - /** - * The base texture object that this texture uses - * - * @property baseTexture - * @type BaseTexture - */ - this.baseTexture = new PIXI.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 = scaleMode || PIXI.scaleModes.DEFAULT; - - this.baseTexture.hasLoaded = true; - - PIXI.Texture.call(this, - this.baseTexture, - new PIXI.Rectangle(0, 0, this.width * this.resolution, this.height * this.resolution) - ); - - /** - * The renderer this RenderTexture uses. A RenderTexture can only belong to one renderer at the moment if its webGL. - * - * @property renderer - * @type CanvasRenderer|WebGLRenderer - */ - this.renderer = renderer || PIXI.defaultRenderer; - - if (this.renderer.type === PIXI.WEBGL_RENDERER) - { - var gl = this.renderer.gl; - this.baseTexture._dirty[gl.id] = false; - - this.textureBuffer = new PIXI.FilterTexture(gl, this.width, this.height, this.baseTexture.scaleMode); - this.baseTexture._glTextures[gl.id] = this.textureBuffer.texture; - - this.render = this.renderWebGL; - this.projection = new PIXI.Point(this.width * 0.5, -this.height * 0.5); - } - else - { - this.render = this.renderCanvas; - this.textureBuffer = new PIXI.CanvasBuffer(this.width * this.resolution, this.height * this.resolution); - this.baseTexture.source = this.textureBuffer.canvas; - } - - /** - * @property valid - * @type Boolean - */ - this.valid = true; - - this.tempMatrix = new Phaser.Matrix(); - - this._updateUvs(); -}; - -PIXI.RenderTexture.prototype = Object.create(PIXI.Texture.prototype); -PIXI.RenderTexture.prototype.constructor = PIXI.RenderTexture; - -/** - * Resizes the RenderTexture. - * - * @method resize - * @param width {Number} The width to resize to. - * @param height {Number} The height to resize to. - * @param updateBase {Boolean} Should the baseTexture.width and height values be resized as well? - */ -PIXI.RenderTexture.prototype.resize = function(width, height, updateBase) -{ - if (width === this.width && height === this.height)return; - - this.valid = (width > 0 && height > 0); - - this.width = width; - this.height = height; - this.frame.width = this.crop.width = width * this.resolution; - this.frame.height = this.crop.height = height * this.resolution; - - if (updateBase) - { - this.baseTexture.width = this.width * this.resolution; - this.baseTexture.height = this.height * this.resolution; - } - - if (this.renderer.type === PIXI.WEBGL_RENDERER) - { - this.projection.x = this.width / 2; - this.projection.y = -this.height / 2; - } - - if(!this.valid)return; - - this.textureBuffer.resize(this.width, this.height); -}; - -/** - * Clears the RenderTexture. - * - * @method clear - */ -PIXI.RenderTexture.prototype.clear = function() -{ - if (!this.valid) - { - return; - } - - if (this.renderer.type === PIXI.WEBGL_RENDERER) - { - this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER, this.textureBuffer.frameBuffer); - } - - this.textureBuffer.clear(); -}; - -/** - * This function will draw the display object to the texture. - * - * @method renderWebGL - * @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 [clear] {Boolean} If true the texture will be cleared before the displayObject is drawn - * @private - */ -PIXI.RenderTexture.prototype.renderWebGL = function(displayObject, matrix, clear) -{ - if (!this.valid || displayObject.alpha === 0) - { - return; - } - - // Let's create a nice matrix to apply to our display object. - // Frame buffers come in upside down so we need to flip the matrix. - var wt = displayObject.worldTransform; - wt.identity(); - wt.translate(0, this.projection.y * 2); - - if (matrix) - { - wt.append(matrix); - } - - wt.scale(1, -1); - - // Time to update all the children of the displayObject with the new matrix. - for (var i = 0; i < displayObject.children.length; i++) - { - displayObject.children[i].updateTransform(); - } - - // Time for the webGL fun stuff! - var gl = this.renderer.gl; - - gl.viewport(0, 0, this.width * this.resolution, this.height * this.resolution); - - gl.bindFramebuffer(gl.FRAMEBUFFER, this.textureBuffer.frameBuffer ); - - if (clear) - { - this.textureBuffer.clear(); - } - - this.renderer.spriteBatch.dirty = true; - - this.renderer.renderDisplayObject(displayObject, this.projection, this.textureBuffer.frameBuffer, matrix); - - this.renderer.spriteBatch.dirty = true; - -}; - -/** - * This function will draw the display object to the texture. - * - * @method renderCanvas - * @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 [clear] {Boolean} If true the texture will be cleared before the displayObject is drawn - * @private - */ -PIXI.RenderTexture.prototype.renderCanvas = function(displayObject, matrix, clear) -{ - if (!this.valid || displayObject.alpha === 0) - { - return; - } - - // Let's create a nice matrix to apply to our display object. - // Frame buffers come in upside down so we need to flip the matrix. - var wt = displayObject.worldTransform; - wt.identity(); - - if (matrix) - { - wt.append(matrix); - } - - // Time to update all the children of the displayObject with the new matrix (what new matrix? there isn't one!) - for (var i = 0; i < displayObject.children.length; i++) - { - displayObject.children[i].updateTransform(); - } - - if (clear) - { - this.textureBuffer.clear(); - } - - var realResolution = this.renderer.resolution; - - this.renderer.resolution = this.resolution; - - this.renderer.renderDisplayObject(displayObject, this.textureBuffer.context, matrix); - - this.renderer.resolution = realResolution; -}; - -/** - * Will return a HTML Image of the texture - * - * @method getImage - * @return {Image} - */ -PIXI.RenderTexture.prototype.getImage = function() -{ - var image = new Image(); - image.src = this.getBase64(); - return image; -}; - -/** - * Will return a base64 encoded string of this texture. It works by calling RenderTexture.getCanvas and then running toDataURL on that. - * - * @method getBase64 - * @return {String} A base64 encoded string of the texture. - */ -PIXI.RenderTexture.prototype.getBase64 = function() -{ - return this.getCanvas().toDataURL(); -}; - -/** - * Creates a Canvas element, renders this RenderTexture to it and then returns it. - * - * @method getCanvas - * @return {HTMLCanvasElement} A Canvas element with the texture rendered on. - */ -PIXI.RenderTexture.prototype.getCanvas = function() -{ - if (this.renderer.type === PIXI.WEBGL_RENDERER) - { - var gl = this.renderer.gl; - var width = this.textureBuffer.width; - var height = this.textureBuffer.height; - - var webGLPixels = new Uint8Array(4 * width * height); - - gl.bindFramebuffer(gl.FRAMEBUFFER, this.textureBuffer.frameBuffer); - gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, webGLPixels); - gl.bindFramebuffer(gl.FRAMEBUFFER, null); - - var tempCanvas = new PIXI.CanvasBuffer(width, height); - var canvasData = tempCanvas.context.getImageData(0, 0, width, height); - canvasData.data.set(webGLPixels); - - tempCanvas.context.putImageData(canvasData, 0, 0); - - return tempCanvas.canvas; - } - else - { - return this.textureBuffer.canvas; - } -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - -/** - * 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. - * - * @class AbstractFilter - * @constructor - * @param fragmentSrc {Array} The fragment source in an array of strings. - * @param uniforms {Object} An object containing the uniforms for this filter. - */ -PIXI.AbstractFilter = function(fragmentSrc, uniforms) -{ - /** - * An array of passes - some filters contain a few steps this array simply stores the steps in a liniear fashion. - * For example the blur filter has two passes blurX and blurY. - * @property passes - * @type Array - * @private - */ - this.passes = [this]; - - /** - * @property shaders - * @type Array - * @private - */ - this.shaders = []; - - /** - * @property dirty - * @type Boolean - */ - this.dirty = true; - - /** - * @property padding - * @type Number - */ - this.padding = 0; - - /** - * @property uniforms - * @type Object - * @private - */ - this.uniforms = uniforms || {}; - - /** - * @property fragmentSrc - * @type Array - * @private - */ - this.fragmentSrc = fragmentSrc || []; -}; - -PIXI.AbstractFilter.prototype.constructor = PIXI.AbstractFilter; - -/** - * Syncs the uniforms between the class object and the shaders. - * - * @method syncUniforms - */ -PIXI.AbstractFilter.prototype.syncUniforms = function() -{ - for(var i=0,j=this.shaders.length; i 0) { - var paddingX = this.canvasPadding / this.worldTransform.a; - var paddingY = this.canvasPadding / this.worldTransform.d; - var centerX = (x0 + x1 + x2) / 3; - var centerY = (y0 + y1 + y2) / 3; - - var normX = x0 - centerX; - var normY = y0 - centerY; - - var dist = Math.sqrt(normX * normX + normY * normY); - x0 = centerX + (normX / dist) * (dist + paddingX); - y0 = centerY + (normY / dist) * (dist + paddingY); - - // - - normX = x1 - centerX; - normY = y1 - centerY; - - dist = Math.sqrt(normX * normX + normY * normY); - x1 = centerX + (normX / dist) * (dist + paddingX); - y1 = centerY + (normY / dist) * (dist + paddingY); - - normX = x2 - centerX; - normY = y2 - centerY; - - dist = Math.sqrt(normX * normX + normY * normY); - x2 = centerX + (normX / dist) * (dist + paddingX); - y2 = centerY + (normY / dist) * (dist + paddingY); - } - - context.save(); - context.beginPath(); - - - context.moveTo(x0, y0); - context.lineTo(x1, y1); - context.lineTo(x2, y2); - - context.closePath(); - - context.clip(); - - // Compute matrix transform - var delta = (u0 * v1) + (v0 * u2) + (u1 * v2) - (v1 * u2) - (v0 * u1) - (u0 * v2); - var deltaA = (x0 * v1) + (v0 * x2) + (x1 * v2) - (v1 * x2) - (v0 * x1) - (x0 * v2); - var deltaB = (u0 * x1) + (x0 * u2) + (u1 * x2) - (x1 * u2) - (x0 * u1) - (u0 * x2); - var deltaC = (u0 * v1 * x2) + (v0 * x1 * u2) + (x0 * u1 * v2) - (x0 * v1 * u2) - (v0 * u1 * x2) - (u0 * x1 * v2); - var deltaD = (y0 * v1) + (v0 * y2) + (y1 * v2) - (v1 * y2) - (v0 * y1) - (y0 * v2); - var deltaE = (u0 * y1) + (y0 * u2) + (u1 * y2) - (y1 * u2) - (y0 * u1) - (u0 * y2); - var deltaF = (u0 * v1 * y2) + (v0 * y1 * u2) + (y0 * u1 * v2) - (y0 * v1 * u2) - (v0 * u1 * y2) - (u0 * y1 * v2); - - context.transform(deltaA / delta, deltaD / delta, - deltaB / delta, deltaE / delta, - deltaC / delta, deltaF / delta); - - context.drawImage(textureSource, 0, 0); - context.restore(); -}; - - - -/** - * Renders a flat strip - * - * @method renderStripFlat - * @param strip {Strip} The Strip to render - * @private - */ -PIXI.Strip.prototype.renderStripFlat = function(strip) -{ - var context = this.context; - var vertices = strip.vertices; - - var length = vertices.length/2; - this.count++; - - context.beginPath(); - for (var i=1; i < length-2; i++) - { - // draw some triangles! - var index = i*2; - - var x0 = vertices[index], x1 = vertices[index+2], x2 = vertices[index+4]; - var y0 = vertices[index+1], y1 = vertices[index+3], y2 = vertices[index+5]; - - context.moveTo(x0, y0); - context.lineTo(x1, y1); - context.lineTo(x2, y2); - } - - context.fillStyle = '#FF0000'; - context.fill(); - context.closePath(); -}; - -/* -PIXI.Strip.prototype.setTexture = function(texture) -{ - //TODO SET THE TEXTURES - //TODO VISIBILITY - - // stop current texture - this.texture = texture; - this.width = texture.frame.width; - this.height = texture.frame.height; - this.updateFrame = true; -}; -*/ - -/** - * When the texture is updated, this event will fire to update the scale and frame - * - * @method onTextureUpdate - * @param event - * @private - */ - -PIXI.Strip.prototype.onTextureUpdate = function() -{ - this.updateFrame = true; -}; - -/** - * Returns the bounds of the mesh as a rectangle. The bounds calculation takes the worldTransform into account. - * - * @method getBounds - * @param matrix {Matrix} the transformation matrix of the sprite - * @return {Rectangle} the framing rectangle - */ -PIXI.Strip.prototype.getBounds = function(matrix) -{ - var worldTransform = matrix || this.worldTransform; - - var a = worldTransform.a; - var b = worldTransform.b; - var c = worldTransform.c; - var d = worldTransform.d; - var tx = worldTransform.tx; - var ty = worldTransform.ty; - - var maxX = -Infinity; - var maxY = -Infinity; - - var minX = Infinity; - var minY = Infinity; - - var vertices = this.vertices; - for (var i = 0, n = vertices.length; i < n; i += 2) - { - var rawX = vertices[i], rawY = vertices[i + 1]; - var x = (a * rawX) + (c * rawY) + tx; - var y = (d * rawY) + (b * rawX) + ty; - - minX = x < minX ? x : minX; - minY = y < minY ? y : minY; - - maxX = x > maxX ? x : maxX; - maxY = y > maxY ? y : maxY; - } - - if (minX === -Infinity || maxY === Infinity) - { - return PIXI.EmptyRectangle; - } - - var bounds = this._bounds; - - bounds.x = minX; - bounds.width = maxX - minX; - - bounds.y = minY; - bounds.height = maxY - minY; - - // store a reference so that if this function gets called again in the render cycle we do not have to recalculate - this._currentBounds = bounds; - - return bounds; -}; - -/** - * Different drawing buffer modes supported - * - * @property - * @type {{TRIANGLE_STRIP: number, TRIANGLES: number}} - * @static - */ -PIXI.Strip.DrawModes = { - TRIANGLE_STRIP: 0, - TRIANGLES: 1 -}; - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - * @copyright Mat Groves, Rovanion Luckey - */ - -/** - * - * @class Rope - * @constructor - * @extends Strip - * @param {Texture} texture - The texture to use on the rope. - * @param {Array} points - An array of {PIXI.Point}. - * - */ -PIXI.Rope = function(texture, points) -{ - PIXI.Strip.call( this, texture ); - this.points = points; - - this.vertices = new PIXI.Float32Array(points.length * 4); - this.uvs = new PIXI.Float32Array(points.length * 4); - this.colors = new PIXI.Float32Array(points.length * 2); - this.indices = new PIXI.Uint16Array(points.length * 2); - - - this.refresh(); -}; - - -// constructor -PIXI.Rope.prototype = Object.create( PIXI.Strip.prototype ); -PIXI.Rope.prototype.constructor = PIXI.Rope; - -/* - * Refreshes - * - * @method refresh - */ -PIXI.Rope.prototype.refresh = function() -{ - var points = this.points; - if(points.length < 1) return; - - var uvs = this.uvs; - - var lastPoint = points[0]; - var indices = this.indices; - var colors = this.colors; - - this.count-=0.2; - - uvs[0] = 0; - uvs[1] = 0; - uvs[2] = 0; - uvs[3] = 1; - - colors[0] = 1; - colors[1] = 1; - - indices[0] = 0; - indices[1] = 1; - - var total = points.length, - point, index, amount; - - for (var i = 1; i < total; i++) - { - point = points[i]; - index = i * 4; - // time to do some smart drawing! - amount = i / (total-1); - - if(i%2) - { - uvs[index] = amount; - uvs[index+1] = 0; - - uvs[index+2] = amount; - uvs[index+3] = 1; - } - else - { - uvs[index] = amount; - uvs[index+1] = 0; - - uvs[index+2] = amount; - uvs[index+3] = 1; - } - - index = i * 2; - colors[index] = 1; - colors[index+1] = 1; - - index = i * 2; - indices[index] = index; - indices[index + 1] = index + 1; - - lastPoint = point; - } -}; - -/* - * Updates the object transform for rendering - * - * @method updateTransform - * @private - */ -PIXI.Rope.prototype.updateTransform = function() -{ - - var points = this.points; - if(points.length < 1)return; - - var lastPoint = points[0]; - var nextPoint; - var perp = {x:0, y:0}; - - this.count-=0.2; - - var vertices = this.vertices; - var total = points.length, - point, index, ratio, perpLength, num; - - for (var i = 0; i < total; i++) - { - point = points[i]; - index = i * 4; - - if(i < points.length-1) - { - nextPoint = points[i+1]; - } - else - { - nextPoint = point; - } - - perp.y = -(nextPoint.x - lastPoint.x); - perp.x = nextPoint.y - lastPoint.y; - - ratio = (1 - (i / (total-1))) * 10; - - if(ratio > 1) ratio = 1; - - perpLength = Math.sqrt(perp.x * perp.x + perp.y * perp.y); - num = this.texture.height / 2; //(20 + Math.abs(Math.sin((i + this.count) * 0.3) * 50) )* ratio; - perp.x /= perpLength; - perp.y /= perpLength; - - perp.x *= num; - perp.y *= num; - - vertices[index] = point.x + perp.x; - vertices[index+1] = point.y + perp.y; - vertices[index+2] = point.x - perp.x; - vertices[index+3] = point.y - perp.y; - - lastPoint = point; - } - - PIXI.DisplayObjectContainer.prototype.updateTransform.call( this ); -}; -/* - * Sets the texture that the Rope will use - * - * @method setTexture - * @param texture {Texture} the texture that will be used - */ -PIXI.Rope.prototype.setTexture = function(texture) -{ - // stop current texture - this.texture = texture; - //this.updateFrame = true; -}; - -/** - * @author Mat Groves http://matgroves.com/ - */ - -/** - * A tiling sprite is a fast way of rendering a tiling image - * - * @class TilingSprite - * @extends Sprite - * @constructor - * @param texture {Texture} the texture of the tiling sprite - * @param width {Number} the width of the tiling sprite - * @param height {Number} the height of the tiling sprite - */ -PIXI.TilingSprite = function(texture, width, height) -{ - PIXI.Sprite.call(this, texture); - - /** - * The width of the tiling sprite - * - * @property width - * @type Number - */ - this._width = width || 128; - - /** - * The height of the tiling sprite - * - * @property height - * @type Number - */ - this._height = height || 128; - - /** - * The scaling of the image that is being tiled - * - * @property tileScale - * @type Point - */ - this.tileScale = new PIXI.Point(1, 1); - - /** - * A point that represents the scale of the texture object - * - * @property tileScaleOffset - * @type Point - */ - this.tileScaleOffset = new PIXI.Point(1, 1); - - /** - * The offset position of the image that is being tiled - * - * @property tilePosition - * @type Point - */ - this.tilePosition = new PIXI.Point(); - - /** - * Whether this sprite is renderable or not - * - * @property renderable - * @type Boolean - * @default true - */ - this.renderable = true; - - /** - * The tint applied to the sprite. This is a hex value - * - * @property tint - * @type Number - * @default 0xFFFFFF - */ - this.tint = 0xFFFFFF; - - /** - * If enabled a green rectangle will be drawn behind the generated tiling texture, allowing you to visually - * debug the texture being used. - * - * @property textureDebug - * @type Boolean - */ - this.textureDebug = false; - - /** - * The blend mode to be applied to the sprite - * - * @property blendMode - * @type Number - * @default PIXI.blendModes.NORMAL; - */ - this.blendMode = PIXI.blendModes.NORMAL; - - /** - * The CanvasBuffer object that the tiled texture is drawn to. - * - * @property canvasBuffer - * @type PIXI.CanvasBuffer - */ - this.canvasBuffer = null; - - /** - * An internal Texture object that holds the tiling texture that was generated from TilingSprite.texture. - * - * @property tilingTexture - * @type PIXI.Texture - */ - this.tilingTexture = null; - - /** - * The Context fill pattern that is used to draw the TilingSprite in Canvas mode only (will be null in WebGL). - * - * @property tilePattern - * @type PIXI.Texture - */ - this.tilePattern = null; - - /** - * If true the TilingSprite will run generateTexture on its **next** render pass. - * This is set by the likes of Phaser.LoadTexture.setFrame. - * - * @property refreshTexture - * @type Boolean - * @default true - */ - this.refreshTexture = true; - - this.frameWidth = 0; - this.frameHeight = 0; - -}; - -PIXI.TilingSprite.prototype = Object.create(PIXI.Sprite.prototype); -PIXI.TilingSprite.prototype.constructor = PIXI.TilingSprite; - -PIXI.TilingSprite.prototype.setTexture = function(texture) -{ - if (this.texture !== texture) - { - this.texture = texture; - this.refreshTexture = true; - this.cachedTint = 0xFFFFFF; - } - -}; - -/** -* Renders the object using the WebGL renderer -* -* @method _renderWebGL -* @param renderSession {RenderSession} -* @private -*/ -PIXI.TilingSprite.prototype._renderWebGL = function(renderSession) -{ - if (!this.visible || !this.renderable || this.alpha === 0) - { - return; - } - - if (this._mask) - { - renderSession.spriteBatch.stop(); - renderSession.maskManager.pushMask(this.mask, renderSession); - renderSession.spriteBatch.start(); - } - - if (this._filters) - { - renderSession.spriteBatch.flush(); - renderSession.filterManager.pushFilter(this._filterBlock); - } - - if (this.refreshTexture) - { - this.generateTilingTexture(true, renderSession); - - if (this.tilingTexture) - { - if (this.tilingTexture.needsUpdate) - { - renderSession.renderer.updateTexture(this.tilingTexture.baseTexture); - this.tilingTexture.needsUpdate = false; - } - } - else - { - return; - } - } - - renderSession.spriteBatch.renderTilingSprite(this); - - for (var i = 0; i < this.children.length; i++) - { - this.children[i]._renderWebGL(renderSession); - } - - renderSession.spriteBatch.stop(); - - if (this._filters) - { - renderSession.filterManager.popFilter(); - } - - if (this._mask) - { - renderSession.maskManager.popMask(this._mask, renderSession); - } - - renderSession.spriteBatch.start(); - -}; - -/** -* Renders the object using the Canvas renderer -* -* @method _renderCanvas -* @param renderSession {RenderSession} -* @private -*/ -PIXI.TilingSprite.prototype._renderCanvas = function(renderSession) -{ - if (!this.visible || !this.renderable || this.alpha === 0) - { - return; - } - - var context = renderSession.context; - - if (this._mask) - { - renderSession.maskManager.pushMask(this._mask, renderSession); - } - - context.globalAlpha = this.worldAlpha; - - var wt = this.worldTransform; - var resolution = renderSession.resolution; - var tx = (wt.tx * resolution) + renderSession.shakeX; - var ty = (wt.ty * resolution) + renderSession.shakeY; - - context.setTransform(wt.a * resolution, wt.b * resolution, wt.c * resolution, wt.d * resolution, tx, ty); - - if (this.refreshTexture) - { - this.generateTilingTexture(false, renderSession); - - if (this.tilingTexture) - { - this.tilePattern = context.createPattern(this.tilingTexture.baseTexture.source, 'repeat'); - } - else - { - return; - } - } - - var sessionBlendMode = renderSession.currentBlendMode; - - // Check blend mode - if (this.blendMode !== renderSession.currentBlendMode) - { - renderSession.currentBlendMode = this.blendMode; - context.globalCompositeOperation = PIXI.blendModesCanvas[renderSession.currentBlendMode]; - } - - var tilePosition = this.tilePosition; - var tileScale = this.tileScale; - - tilePosition.x %= this.tilingTexture.baseTexture.width; - tilePosition.y %= this.tilingTexture.baseTexture.height; - - // Translate - context.scale(tileScale.x, tileScale.y); - context.translate(tilePosition.x + (this.anchor.x * -this._width), tilePosition.y + (this.anchor.y * -this._height)); - - context.fillStyle = this.tilePattern; - - var tx = -tilePosition.x; - var ty = -tilePosition.y; - var tw = this._width / tileScale.x; - var th = this._height / tileScale.y; - - // Allow for pixel rounding - if (renderSession.roundPixels) - { - tx |= 0; - ty |= 0; - tw |= 0; - th |= 0; - } - - context.fillRect(tx, ty, tw, th); - - // Translate back again - context.scale(1 / tileScale.x, 1 / tileScale.y); - context.translate(-tilePosition.x + (this.anchor.x * this._width), -tilePosition.y + (this.anchor.y * this._height)); - - if (this._mask) - { - renderSession.maskManager.popMask(renderSession); - } - - for (var i = 0; i < this.children.length; i++) - { - this.children[i]._renderCanvas(renderSession); - } - - // Reset blend mode - if (sessionBlendMode !== this.blendMode) - { - renderSession.currentBlendMode = sessionBlendMode; - context.globalCompositeOperation = PIXI.blendModesCanvas[sessionBlendMode]; - } - -}; - -/** - * When the texture is updated, this event will fire to update the scale and frame - * - * @method onTextureUpdate - * @param event - * @private - */ -PIXI.TilingSprite.prototype.onTextureUpdate = function() -{ - // overriding the sprite version of this! -}; - -/** -* -* @method generateTilingTexture -* -* @param forcePowerOfTwo {Boolean} Whether we want to force the texture to be a power of two -* @param renderSession {RenderSession} -*/ -PIXI.TilingSprite.prototype.generateTilingTexture = function(forcePowerOfTwo, renderSession) -{ - if (!this.texture.baseTexture.hasLoaded) - { - return; - } - - var texture = this.texture; - var frame = texture.frame; - - var targetWidth = this._frame.sourceSizeW || this._frame.width; - var targetHeight = this._frame.sourceSizeH || this._frame.height; - - var dx = 0; - var dy = 0; - - if (this._frame.trimmed) - { - dx = this._frame.spriteSourceSizeX; - dy = this._frame.spriteSourceSizeY; - } - - if (forcePowerOfTwo) - { - targetWidth = PIXI.getNextPowerOfTwo(targetWidth); - targetHeight = PIXI.getNextPowerOfTwo(targetHeight); - } - - if (this.canvasBuffer) - { - this.canvasBuffer.resize(targetWidth, targetHeight); - this.tilingTexture.baseTexture.width = targetWidth; - this.tilingTexture.baseTexture.height = targetHeight; - this.tilingTexture.needsUpdate = true; - } - else - { - this.canvasBuffer = new PIXI.CanvasBuffer(targetWidth, targetHeight); - this.tilingTexture = PIXI.Texture.fromCanvas(this.canvasBuffer.canvas); - this.tilingTexture.isTiling = true; - this.tilingTexture.needsUpdate = true; - } - - if (this.textureDebug) - { - this.canvasBuffer.context.strokeStyle = '#00ff00'; - this.canvasBuffer.context.strokeRect(0, 0, targetWidth, targetHeight); - } - - // If a sprite sheet we need this: - var w = texture.crop.width; - var h = texture.crop.height; - - if (w !== targetWidth || h !== targetHeight) - { - w = targetWidth; - h = targetHeight; - } - - this.canvasBuffer.context.drawImage(texture.baseTexture.source, - texture.crop.x, - texture.crop.y, - texture.crop.width, - texture.crop.height, - dx, - dy, - w, - h); - - this.tileScaleOffset.x = frame.width / targetWidth; - this.tileScaleOffset.y = frame.height / targetHeight; - - this.refreshTexture = false; - - this.tilingTexture.baseTexture._powerOf2 = true; - -}; - -/** -* Returns the framing rectangle of the sprite as a PIXI.Rectangle object -* -* @method getBounds -* @return {Rectangle} the framing rectangle -*/ -PIXI.TilingSprite.prototype.getBounds = function() -{ - var width = this._width; - var height = this._height; - - var w0 = width * (1-this.anchor.x); - var w1 = width * -this.anchor.x; - - var h0 = height * (1-this.anchor.y); - var h1 = height * -this.anchor.y; - - var worldTransform = this.worldTransform; - - var a = worldTransform.a; - var b = worldTransform.b; - var c = worldTransform.c; - var d = worldTransform.d; - var tx = worldTransform.tx; - var ty = worldTransform.ty; - - var x1 = a * w1 + c * h1 + tx; - var y1 = d * h1 + b * w1 + ty; - - var x2 = a * w0 + c * h1 + tx; - var y2 = d * h1 + b * w0 + ty; - - var x3 = a * w0 + c * h0 + tx; - var y3 = d * h0 + b * w0 + ty; - - var x4 = a * w1 + c * h0 + tx; - var y4 = d * h0 + b * w1 + ty; - - var maxX = -Infinity; - var maxY = -Infinity; - - var minX = Infinity; - var minY = Infinity; - - minX = x1 < minX ? x1 : minX; - minX = x2 < minX ? x2 : minX; - minX = x3 < minX ? x3 : minX; - minX = x4 < minX ? x4 : minX; - - minY = y1 < minY ? y1 : minY; - minY = y2 < minY ? y2 : minY; - minY = y3 < minY ? y3 : minY; - minY = y4 < minY ? y4 : minY; - - maxX = x1 > maxX ? x1 : maxX; - maxX = x2 > maxX ? x2 : maxX; - maxX = x3 > maxX ? x3 : maxX; - maxX = x4 > maxX ? x4 : maxX; - - maxY = y1 > maxY ? y1 : maxY; - maxY = y2 > maxY ? y2 : maxY; - maxY = y3 > maxY ? y3 : maxY; - maxY = y4 > maxY ? y4 : maxY; - - var bounds = this._bounds; - - bounds.x = minX; - bounds.width = maxX - minX; - - bounds.y = minY; - bounds.height = maxY - minY; - - // store a reference so that if this function gets called again in the render cycle we do not have to recalculate - this._currentBounds = bounds; - - return bounds; -}; - -PIXI.TilingSprite.prototype.destroy = function () { - - PIXI.Sprite.prototype.destroy.call(this); - - if (this.canvasBuffer) - { - this.canvasBuffer.destroy(); - this.canvasBuffer = null; - } - - this.tileScale = null; - this.tileScaleOffset = null; - this.tilePosition = null; - - if (this.tilingTexture) - { - this.tilingTexture.destroy(true); - this.tilingTexture = null; - } - -}; - -/** - * The width of the sprite, setting this will actually modify the scale to achieve the value set - * - * @property width - * @type Number - */ -Object.defineProperty(PIXI.TilingSprite.prototype, 'width', { - - get: function() { - return this._width; - }, - - set: function(value) { - this._width = value; - } - -}); - -/** - * The height of the TilingSprite, setting this will actually modify the scale to achieve the value set - * - * @property height - * @type Number - */ -Object.defineProperty(PIXI.TilingSprite.prototype, 'height', { - - get: function() { - return this._height; - }, - - set: function(value) { - this._height = value; - } - -}); - -/** - * @author Mat Groves http://matgroves.com/ @Doormat23 - */ - - if (typeof exports !== 'undefined') { - if (typeof module !== 'undefined' && module.exports) { - exports = module.exports = PIXI; - } - exports.PIXI = PIXI; - } else if (typeof define !== 'undefined' && define.amd) { - define('PIXI', (function() { return root.PIXI = PIXI; })() ); - } else { - root.PIXI = PIXI; - } - - return PIXI; -}).call(this); /** * @author Richard Davey * @copyright 2016 Photon Storm Ltd. @@ -29864,7 +54,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.6.0', + VERSION: '2.6.1', /** * An array of Phaser game instances. @@ -92413,7 +62603,7 @@ Phaser.Physics.Arcade.prototype = { if (this.skipQuadTree || sprite.body.skipQuadTree) { - var bounds; + var bounds = {}; for (var i = 0; i < group.hash.length; i++) { @@ -92526,7 +62716,7 @@ Phaser.Physics.Arcade.prototype = { for (var i = 0; i < group.hash.length; i++) { - var bounds1; + var bounds1 = {}; var object1 = group.hash[i]; // Skip duff entries - we can't check a non-existent sprite or one with no body @@ -92540,7 +62730,7 @@ Phaser.Physics.Arcade.prototype = { for (var j = i + 1; j < group.hash.length; j++) { - var bounds2; + var bounds2 = {}; var object2 = group.hash[j]; // Skip duff entries - we can't check a non-existent sprite or one with no body diff --git a/build/phaser-creature.map b/build/phaser-creature.map index a64e8f35d..9e265dc00 100644 --- a/build/phaser-creature.map +++ b/build/phaser-creature.map @@ -1 +1 @@ -{"version":3,"sources":["phaser-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","e","module","global","self","p2","n","o","u","require","Error","call","1","_dereq_","Line","Scalar","lineInt","l1","l2","precision","c1","c2","eq","segmentsIntersect","p1","q1","q2","dx","dy","da","db","./Scalar","2","Point","area","leftOn","rightOn","tmpPoint1","tmpPoint2","collinear","thresholdAngle","bc","magA","magB","angle","sqdist","3","Polygon","vertices","getIntersectionPoint","at","last","clear","append","poly","from","to","makeCCW","br","reverse","tmp","N","pop","isReflex","tmpLine1","tmpLine2","canSee","targetPoly","getCutEdges","tmpPoly","nDiags","Number","MAX_VALUE","decomp","edges","slice","cutEdges","polys","cutEdge","splice","indexOf","isSimple","path","quickDecomp","reflexVertices","steinerPoints","maxlevel","level","upperInt","lowerInt","upperDist","lowerDist","d","closestDist","upperIndex","lowerIndex","closestIndex","lowerPoly","upperPoly","console","warn","removeCollinearPoints","./Line","./Point","4","5","./Polygon","6","version","description","author","keywords","main","engines","node","repository","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","upperBound","setFromPoints","points","position","skinSize","cosAngle","sinAngle","aabb","extend","overlaps","u1","u2","containsPoint","point","overlapsRay","ray","dirFracX","direction","dirFracY","t1","t2","t3","t4","tmin","tmax","../math/vec2","../utils/Utils","8","Broadphase","world","boundingVolumeType","Body","BOUNDING_CIRCLE","setWorld","getCollisionPairs","boundingRadiusCheck","bodyA","bodyB","d2","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","frictionEquationPool","FrictionEquationPool","restitution","stiffness","Equation","DEFAULT_STIFFNESS","relaxation","DEFAULT_RELAXATION","frictionStiffness","frictionRelaxation","enableFrictionReduction","collidingBodiesLastStep","TupleDictionary","contactSkinSize","setConvexToCapsuleShapeMiddle","convexShape","capsuleShape","pointInConvex","worldPoint","convexOffset","convexAngle","worldVertex0","pic_worldVertex0","worldVertex1","pic_worldVertex1","r0","pic_r0","r1","pic_r1","verts","lastCross","crossLength","Circle","Convex","Shape","Box","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","eqs","ce","fe","release","createContactEquation","firstImpact","needsUpdate","createFrictionEquation","setSlipForce","relativeVelocity","createFrictionFromContact","contactPointA","contactPointB","rotate90cw","normalA","createFrictionFromAverage","numContacts","invNumContacts","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","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","span1","span2","swapped","gce_tmp1","gce_tmp2","gce_tmp3","flip","closestEdge","maxDot","circleHeightfield_candidate","circleHeightfield_dist","circleHeightfield_v0","circleHeightfield_v1","circleHeightfield_minCandidate","circleHeightfield_worldNormal","circleHeightfield_minCandidateNormal","HEIGHTFIELD","circleHeightfield","hfBody","hfShape","hfPos","hfAngle","heights","elementWidth","minCandidateNormal","idxA","idxB","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","CLOSEST","ALL","intersectBodies","shouldStop","body","intersectBody","intersectBody_worldPosition","collisionResponse","worldPosition","shape","worldAngle","intersectShape","_currentBody","_currentShape","raycast","reportIntersection","fraction","faceIndex","hasHit","../collision/AABB","../collision/RaycastResult","12","RaycastResult","isStopped","getHitDistance","getHitPoint","stop","../collision/Ray","13","SAPBroadphase","axisList","axisIndex","that","_addBodyHandler","_removeBodyHandler","idx","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","AngleLockEquation","maxTorque","setMaxTorque","setRatio","torque","getMaxTorque","../equations/AngleLockEquation","17","LockConstraint","localAngleB","localOffsetB","force","18","PrismaticConstraint","localAxisA","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","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","emit","event","listenerArray","target","27","ContactMaterial","materialA","materialB","Material","idCounter","friction","./Material","28","29","PolyK","GetArea","sum","Triangulate","tgs","avl","al","i0","i1","i2","cx","cy","earFound","_convex","_PointInTriangle","px","py","v0x","v0y","v1x","v1y","v2x","v2y","dot00","dot01","dot02","dot11","dot12","invDenom","30","crossVZ","zcomp","crossZV","toLocalFrame","framePosition","frameAngle","toGlobalFrame","localPoint","vectorToLocalFrame","worldVector","vectorToGlobalFrame","localVector","centroid","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","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","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","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","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","maxValue","minValue","updateMaxMinValues","getLineSegment","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","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","dict","57","howmany","P2_ARRAY_TYPE","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","_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","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","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","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","defaultVertexSrc","useProgram","uSampler","getUniformLocation","projectionVector","offsetVector","dimensions","aVertexPosition","getAttribLocation","aTextureCoord","colorAttribute","uniforms","uniformLocation","initUniforms","uniform","_init","initSampler2D","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","_dirty","instances","updateTexture","deleteProgram","PixiFastShader","uMatrix","aPositionCoord","aScale","aRotation","StripShader","translationMatrix","attribute","PrimitiveShader","tintColor","ComplexPrimitiveShader","color","glContexts","WebGLRenderer","defaultRenderer","transparent","autoResize","preserveDrawingBuffer","clearBeforeRender","_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","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","renderTilingSprite","tilingTexture","TextureUvs","tilePosition","tileScaleOffset","offsetX","offsetY","scaleX","tileScale","scaleY","TEXTURE0","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","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","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","TypeError","F","proto","fun","CheapArray","assert","reverseString","string","getProperty","obj","prop","parts","setProperty","chanceRoll","chance","randomChoice","choice1","choice2","parseDimension","dimension","innerWidth","innerHeight","pad","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","equals","intersects","degToRad","intersectsRectangle","halfWidth","xDist","halfHeight","yDist","xCornerDist","yCornerDist","xCornerDistSq","yCornerDistSq","maxCornerDistSq","Ellipse","normx","normy","fromSprite","startSprite","endSprite","useCenter","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","clampX","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","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","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","KeyCode","processKeyPress","clearCaptures","String","fromCharCode","charCode","A","charCodeAt","C","E","H","J","K","M","O","P","Q","R","S","T","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","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","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","startAngle","endAngle","anticlockwise","segments","sweep","segs","startX","startY","filling","theta","theta2","cTheta","sTheta","segMinus","remainder","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","tanMin","sortLinked","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","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","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","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","animation","meshData","_creature","timeDelta","creatureBoundsMin","creatureBoundsMax","updateRenderData","updateData","_renderCreature","updateCreatureBounds","read_uvs","pt_index","uv_index","setAnimation","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-creature.min.js"} \ 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 b5f01b1a2..fe80ccafe 100644 --- a/build/phaser-creature.min.js +++ b/build/phaser-creature.min.js @@ -1,30 +1,22 @@ -/* Phaser v2.6.0 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.6.1 - 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;c0)){for(var d=c.cache_pts,e=c.start_time;e<=c.end_time;e++){this.setRunTime(e);for(var f=[],g=0;g<3*this.target_creature.total_num_pts;g++)f[g]=0;this.PoseCreature(a,f),d.push(f)}this.setRunTime(b)}},CreatureManager.prototype.FillSinglePointCacheFrame=function(a,b){var c=this.getRunTime(),d=this.animations[a];this.setRunTime(b);for(var e=[],f=0;f<3*this.target_creature.total_num_pts;f++)e[f]=0;this.PoseCreature(a,e),d.fill_cache_pts.push(e),d.verifyFillCache(),this.setRunTime(c)},CreatureManager.prototype.GetIsPlaying=function(){return this.is_playing},CreatureManager.prototype.SetShouldLoop=function(a){this.should_loop=a},CreatureManager.prototype.SetUseCustomTimeRange=function(a){this.use_custom_time_range=a},CreatureManager.prototype.SetCustomTimeRange=function(a,b){this.custom_start_time=a,this.custom_end_time=b},CreatureManager.prototype.SetIsPlaying=function(a){this.is_playing=a},CreatureManager.prototype.ResetToStartTimes=function(){var a=this.animations[active_animation_name];this.run_time=a.start_time},CreatureManager.prototype.setRunTime=function(a){this.run_time=a,this.correctTime()},CreatureManager.prototype.increRunTime=function(a){this.run_time+=a,this.correctTime()},CreatureManager.prototype.correctTime=function(){var a=this.animations[this.active_animation_name],b=a.start_time,c=a.end_time;this.use_custom_time_range&&(b=this.custom_start_time,c=this.custom_end_time),this.run_time>c?this.should_loop?this.run_time=b:this.run_time=c:this.run_timea;a++){var b=this.animations[this.active_blend_animation_names[a]];b.cache_pts.length>0?b.poseFromCachePts(this.getRunTime(),this.blend_render_pts[a],this.target_creature.total_num_pts):this.PoseCreature(this.active_blend_animation_names[a],this.blend_render_pts[a])}for(var c=0;c<3*this.target_creature.total_num_pts;c++){var d=c,e=this.blend_render_pts[0][c],f=this.blend_render_pts[1][c];this.target_creature.render_pts.set(d,(1-blending_factor)*e+blending_factor*f)}}else{var b=this.animations[this.active_animation_name];b.cache_pts.length>0?b.poseFromCachePts(this.getRunTime(),this.target_creature.render_pts,this.target_creature.total_num_pts):this.PoseCreature(this.active_animation_name,this.target_creature.render_pts)}},CreatureManager.prototype.SetTimeScale=function(a){this.time_scale=a},CreatureManager.prototype.SetBlending=function(a){if(this.do_blending=a,this.do_blending){if(0==this.blend_render_pts[0].length){for(var b=[],c=0;c<3*target_creature.total_num_pts;c++)b.push(0);this.blend_render_pts.set(0,b)}if(0==this.blend_render_pts[1].length){for(var b=[],c=0;c<3*this.target_creature.total_num_pts;c++)b.push(0);this.blend_render_pts[1]=b}}},CreatureManager.prototype.SetBlendingAnimations=function(a,b){this.active_blend_animation_names[0]=a,this.active_blend_animation_names[1]=b},CreatureManager.prototype.SetBlendingFactor=function(a){this.blending_factor=a},CreatureManager.prototype.IsContactBone=function(a,b){var c=this.target_creature.render_composition.getRootBone();return this.ProcessContactBone(a,b,c)},CreatureManager.prototype.PoseCreature=function(a,b){var c=this.animations[a],d=c.bones_cache,e=c.displacement_cache,f=c.uv_warp_cache,g=this.target_creature.render_composition,h=g.getBonesMap(),i=g.getRegionsMap();d.retrieveValuesAtTime(this.getRunTime(),h),null!=this.bones_override_callback&&this.bones_override_callback(h),e.retrieveValuesAtTime(this.getRunTime(),i),f.retrieveValuesAtTime(this.getRunTime(),i);var j=g.getRegions(),k=g.getBonesMap();g.updateAllTransforms(!1);for(var l=0,m=j.length;m>l;l++){var n=j[l],o=n.getStartPtIndex();n.poseFinalPts(b,3*o,k);for(var p=3*n.getStartPtIndex(),q=3*n.getEndPtIndex(),r=p;q>=r;r+=3)b[r+2]=.001*-l}},!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.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); +(function(){function a(a,b){this._scaleFactor=a,this._deltaMode=b,this.originalEvent=null}var b=this,c=c||{VERSION:"2.6.1",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 17576bc7f..83edc872f 100644 --- a/build/phaser.js +++ b/build/phaser.js @@ -7,7 +7,7 @@ * * Phaser - http://phaser.io * -* v2.6.0 "Fal Moran" - Built: Fri Jul 08 2016 15:53:06 +* v2.6.1 "Caemlyn" - Built: Mon Jul 11 2016 09:59:51 * * By Richard Davey http://www.photonstorm.com @photonstorm * @@ -22656,7 +22656,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.6.0', + VERSION: '2.6.1', /** * An array of Phaser game instances. @@ -85205,7 +85205,7 @@ Phaser.Physics.Arcade.prototype = { if (this.skipQuadTree || sprite.body.skipQuadTree) { - var bounds; + var bounds = {}; for (var i = 0; i < group.hash.length; i++) { @@ -85318,7 +85318,7 @@ Phaser.Physics.Arcade.prototype = { for (var i = 0; i < group.hash.length; i++) { - var bounds1; + var bounds1 = {}; var object1 = group.hash[i]; // Skip duff entries - we can't check a non-existent sprite or one with no body @@ -85332,7 +85332,7 @@ Phaser.Physics.Arcade.prototype = { for (var j = i + 1; j < group.hash.length; j++) { - var bounds2; + var bounds2 = {}; var object2 = group.hash[j]; // Skip duff entries - we can't check a non-existent sprite or one with no body diff --git a/build/phaser.map b/build/phaser.map index 2c333498d..aeb5ea36d 100644 --- a/build/phaser.map +++ b/build/phaser.map @@ -1 +1 @@ -{"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 +{"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 f82a6fb99..c5f42e71d 100644 --- a/build/phaser.min.js +++ b/build/phaser.min.js @@ -1,4 +1,4 @@ -/* Phaser v2.6.0 - http://phaser.io - @photonstorm - (c) 2016 Photon Storm Ltd. */ +/* Phaser v2.6.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)},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, @@ -6,7 +6,7 @@ this.wantsToSleep=!1,this.sleepState=d.AWAKE,this.sleepSpeedLimit=void 0!==a.sle b.exports=d,d.prototype=new g,d.prototype.constructor=d,d.prototype.solve=function(a,b){this.sortEquations();var c=0,g=this.iterations,j=this.frictionIterations,k=this.equations,l=k.length,m=Math.pow(this.tolerance*l,2),n=b.bodies,o=b.bodies.length,p=(f.add,f.set,this.useZeroRHS),q=this.lambda;if(this.usedIterations=0,l)for(var r=0;r!==o;r++){var s=n[r];s.updateSolveMassProperties()}q.length=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){ +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.1",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, @@ -20,7 +20,7 @@ this.dt=Math.min(this.dt,this.duration)),this.percent=this.dt/this.duration,this var i={url:b,data:d,font:null,base:new PIXI.BaseTexture(d)};void 0===g&&(g=0),void 0===h&&(h=0),"json"===f?i.font=c.LoaderParser.jsonBitmapFont(e,i.base,g,h):i.font=c.LoaderParser.xmlBitmapFont(e,i.base,g,h),this._cache.bitmapFont[a]=i,this._resolveURL(b,i)},addJSON:function(a,b,c){this._cache.json[a]={url:b,data:c},this._resolveURL(b,this._cache.json[a])},addXML:function(a,b,c){this._cache.xml[a]={url:b,data:c},this._resolveURL(b,this._cache.xml[a])},addVideo:function(a,b,c,d){this._cache.video[a]={url:b,data:c,isBlob:d,locked:!0},this._resolveURL(b,this._cache.video[a])},addShader:function(a,b,c){this._cache.shader[a]={url:b,data:c},this._resolveURL(b,this._cache.shader[a])},addRenderTexture:function(a,b){this._cache.renderTexture[a]={texture:b,frame:new c.Frame(0,0,0,b.width,b.height,"","")}},addSpriteSheet:function(a,b,d,e,f,g,h,i){void 0===g&&(g=-1),void 0===h&&(h=0),void 0===i&&(i=0);var j={key:a,url:b,data:d,frameWidth:e,frameHeight:f,margin:h,spacing:i,base:new PIXI.BaseTexture(d),frameData:c.AnimationParser.spriteSheet(this.game,d,e,f,g,h,i)};this._cache.image[a]=j,this._resolveURL(b,j)},addTextureAtlas:function(a,b,d,e,f){var g={key:a,url:b,data:d,base:new PIXI.BaseTexture(d)};f===c.Loader.TEXTURE_ATLAS_XML_STARLING?g.frameData=c.AnimationParser.XMLData(this.game,e,a):f===c.Loader.TEXTURE_ATLAS_JSON_PYXEL?g.frameData=c.AnimationParser.JSONDataPyxel(this.game,e,a):Array.isArray(e.frames)?g.frameData=c.AnimationParser.JSONData(this.game,e,a):g.frameData=c.AnimationParser.JSONDataHash(this.game,e,a),this._cache.image[a]=g,this._resolveURL(b,g)},reloadSound:function(a){var b=this,c=this.getSound(a);c&&(c.data.src=c.url,c.data.addEventListener("canplaythrough",function(){return b.reloadSoundComplete(a)},!1),c.data.load())},reloadSoundComplete:function(a){var b=this.getSound(a);b&&(b.locked=!1,this.onSoundUnlock.dispatch(a))},updateSound:function(a,b,c){var d=this.getSound(a);d&&(d[b]=c)},decodedSound:function(a,b){var c=this.getSound(a);c.data=b,c.decoded=!0,c.isDecoding=!1},isSoundDecoded:function(a){var b=this.getItem(a,c.Cache.SOUND,"isSoundDecoded");return b?b.decoded:void 0},isSoundReady:function(a){var b=this.getItem(a,c.Cache.SOUND,"isSoundDecoded");return b?b.decoded&&!this.game.sound.touchLocked:void 0},checkKey:function(a,b){return!!this._cacheMap[a][b]},checkURL:function(a){return!!this._urlMap[this._resolveURL(a)]},checkCanvasKey:function(a){return this.checkKey(c.Cache.CANVAS,a)},checkImageKey:function(a){return this.checkKey(c.Cache.IMAGE,a)},checkTextureKey:function(a){return this.checkKey(c.Cache.TEXTURE,a)},checkSoundKey:function(a){return this.checkKey(c.Cache.SOUND,a)},checkTextKey:function(a){return this.checkKey(c.Cache.TEXT,a)},checkPhysicsKey:function(a){return this.checkKey(c.Cache.PHYSICS,a)},checkTilemapKey:function(a){return this.checkKey(c.Cache.TILEMAP,a)},checkBinaryKey:function(a){return this.checkKey(c.Cache.BINARY,a)},checkBitmapDataKey:function(a){return this.checkKey(c.Cache.BITMAPDATA,a)},checkBitmapFontKey:function(a){return this.checkKey(c.Cache.BITMAPFONT,a)},checkJSONKey:function(a){return this.checkKey(c.Cache.JSON,a)},checkXMLKey:function(a){return this.checkKey(c.Cache.XML,a)},checkVideoKey:function(a){return this.checkKey(c.Cache.VIDEO,a)},checkShaderKey:function(a){return this.checkKey(c.Cache.SHADER,a)},checkRenderTextureKey:function(a){return this.checkKey(c.Cache.RENDER_TEXTURE,a)},getItem:function(a,b,c,d){return this.checkKey(b,a)?void 0===d?this._cacheMap[b][a]:this._cacheMap[b][a][d]:(c&&console.warn("Phaser.Cache."+c+': Key "'+a+'" not found in Cache.'),null)},getCanvas:function(a){return this.getItem(a,c.Cache.CANVAS,"getCanvas","canvas")},getImage:function(a,b){void 0!==a&&null!==a||(a="__default"),void 0===b&&(b=!1);var d=this.getItem(a,c.Cache.IMAGE,"getImage");return null===d&&(d=this.getItem("__missing",c.Cache.IMAGE,"getImage")),b?d:d.data},getTextureFrame:function(a){return this.getItem(a,c.Cache.TEXTURE,"getTextureFrame","frame")},getSound:function(a){return this.getItem(a,c.Cache.SOUND,"getSound")},getSoundData:function(a){return this.getItem(a,c.Cache.SOUND,"getSoundData","data")},getText:function(a){return this.getItem(a,c.Cache.TEXT,"getText","data")},getPhysicsData:function(a,b,d){var e=this.getItem(a,c.Cache.PHYSICS,"getPhysicsData","data");if(null===e||void 0===b||null===b)return e;if(e[b]){var f=e[b];if(!f||!d)return f;for(var g in f)if(g=f[g],g.fixtureKey===d)return g;console.warn('Phaser.Cache.getPhysicsData: Could not find given fixtureKey: "'+d+" in "+a+'"')}else console.warn('Phaser.Cache.getPhysicsData: Invalid key/object: "'+a+" / "+b+'"');return null},getTilemapData:function(a){return this.getItem(a,c.Cache.TILEMAP,"getTilemapData")},getBinary:function(a){return this.getItem(a,c.Cache.BINARY,"getBinary")},getBitmapData:function(a){return this.getItem(a,c.Cache.BITMAPDATA,"getBitmapData","data")},getBitmapFont:function(a){return this.getItem(a,c.Cache.BITMAPFONT,"getBitmapFont")},getJSON:function(a,b){var d=this.getItem(a,c.Cache.JSON,"getJSON","data");return d?b?c.Utils.extend(!0,Array.isArray(d)?[]:{},d):d:null},getXML:function(a){return this.getItem(a,c.Cache.XML,"getXML","data")},getVideo:function(a){return this.getItem(a,c.Cache.VIDEO,"getVideo")},getShader:function(a){return this.getItem(a,c.Cache.SHADER,"getShader","data")},getRenderTexture:function(a){return this.getItem(a,c.Cache.RENDER_TEXTURE,"getRenderTexture")},getBaseTexture:function(a,b){return void 0===b&&(b=c.Cache.IMAGE),this.getItem(a,b,"getBaseTexture","base")},getFrame:function(a,b){return void 0===b&&(b=c.Cache.IMAGE),this.getItem(a,b,"getFrame","frame")},getFrameCount:function(a,b){var c=this.getFrameData(a,b);return c?c.total:0},getFrameData:function(a,b){return void 0===b&&(b=c.Cache.IMAGE),this.getItem(a,b,"getFrameData","frameData")},hasFrameData:function(a,b){return void 0===b&&(b=c.Cache.IMAGE),null!==this.getItem(a,b,"","frameData")},updateFrameData:function(a,b,d){void 0===d&&(d=c.Cache.IMAGE),this._cacheMap[d][a]&&(this._cacheMap[d][a].frameData=b)},getFrameByIndex:function(a,b,c){var d=this.getFrameData(a,c);return d?d.getFrame(b):null},getFrameByName:function(a,b,c){var d=this.getFrameData(a,c);return d?d.getFrameByName(b):null},getURL:function(a){var a=this._resolveURL(a);return a?this._urlMap[a]:(console.warn('Phaser.Cache.getUrl: Invalid url: "'+a+'" or Cache.autoResolveURL was false'),null)},getKeys:function(a){void 0===a&&(a=c.Cache.IMAGE);var b=[];if(this._cacheMap[a])for(var d in this._cacheMap[a])"__default"!==d&&"__missing"!==d&&b.push(d);return b},removeCanvas:function(a){delete this._cache.canvas[a]},removeImage:function(a,b){void 0===b&&(b=!0);var c=this.getImage(a,!0);b&&c.base&&c.base.destroy(),delete this._cache.image[a]},removeSound:function(a){delete this._cache.sound[a]},removeText:function(a){delete this._cache.text[a]},removePhysics:function(a){delete this._cache.physics[a]},removeTilemap:function(a){delete this._cache.tilemap[a]},removeBinary:function(a){delete this._cache.binary[a]},removeBitmapData:function(a){delete this._cache.bitmapData[a]},removeBitmapFont:function(a){delete this._cache.bitmapFont[a]},removeJSON:function(a){delete this._cache.json[a]},removeXML:function(a){delete this._cache.xml[a]},removeVideo:function(a){delete this._cache.video[a]},removeShader:function(a){delete this._cache.shader[a]},removeRenderTexture:function(a){delete this._cache.renderTexture[a]},removeSpriteSheet:function(a){delete this._cache.spriteSheet[a]},removeTextureAtlas:function(a){delete this._cache.atlas[a]},clearGLTextures:function(){for(var a in this._cache.image)this._cache.image[a].base._glTextures=[]},_resolveURL:function(a,b){return this.autoResolveURL?(this._urlResolver.src=this.game.load.baseURL+a,this._urlTemp=this._urlResolver.src,this._urlResolver.src="",b&&(this._urlMap[this._urlTemp]=b),this._urlTemp):null},destroy:function(){for(var a=0;a-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, +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, diff --git a/build/pixi.js b/build/pixi.js new file mode 100644 index 000000000..e3e9e41d4 --- /dev/null +++ b/build/pixi.js @@ -0,0 +1,9018 @@ +/** +* @author Richard Davey +* @copyright 2016 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +* +* @overview +* +* Phaser - http://phaser.io +* +* v2.6.1 "Caemlyn" - Built: Mon Jul 11 2016 10:00:20 +* +* By Richard Davey http://www.photonstorm.com @photonstorm +* +* Phaser is a fun, free and fast 2D game framework for making HTML5 games +* for desktop and mobile web browsers, supporting Canvas and WebGL rendering. +* +* Phaser uses Pixi.js for rendering, created by Mat Groves http://matgroves.com @Doormat23 +* Phaser uses p2.js for full-body physics, created by Stefan Hedman https://github.com/schteppe/p2.js @schteppe +* Phaser contains a port of N+ Physics, converted by Richard Davey, original by http://www.metanetsoftware.com +* +* Many thanks to Adam Saltsman (@ADAMATOMIC) for releasing Flixel, from which both Phaser and my love of framework development originate. +* +* Follow development at http://phaser.io and on our forum +* +* "If you want your children to be intelligent, read them fairy tales." +* "If you want them to be more intelligent, read them more fairy tales." +* -- Albert Einstein +*/ + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +(function(){ + + var root = this; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** + * The [pixi.js](http://www.pixijs.com/) module/namespace. + * + * @module PIXI + */ + +/** + * Namespace-class for [pixi.js](http://www.pixijs.com/). + * + * Contains assorted static properties and enumerations. + * + * @class PIXI + * @static + */ +var PIXI = PIXI || {}; + +/** + * A reference to the Phaser Game instance that owns this Pixi renderer. + * @property {Phaser.Game} game + * @static + */ +PIXI.game = null; + +/** + * @property {Number} WEBGL_RENDERER + * @protected + * @static + */ +PIXI.WEBGL_RENDERER = 0; + +/** + * @property {Number} CANVAS_RENDERER + * @protected + * @static + */ +PIXI.CANVAS_RENDERER = 1; + +/** + * Version of pixi that is loaded. + * @property {String} VERSION + * @static + */ +PIXI.VERSION = "v2.2.9"; + +// used to create uids for various pixi objects. +PIXI._UID = 0; + +if (typeof(Float32Array) != 'undefined') +{ + PIXI.Float32Array = Float32Array; + PIXI.Uint16Array = Uint16Array; + + // Uint32Array and ArrayBuffer only used by WebGL renderer + // We can suppose that if WebGL is supported then typed arrays are supported too + // as they predate WebGL support for all browsers: + // see typed arrays support: http://caniuse.com/#search=TypedArrays + // see WebGL support: http://caniuse.com/#search=WebGL + PIXI.Uint32Array = Uint32Array; + PIXI.ArrayBuffer = ArrayBuffer; +} +else +{ + PIXI.Float32Array = Array; + PIXI.Uint16Array = Array; +} + +/** + * @property {Number} PI_2 + * @static + */ +PIXI.PI_2 = Math.PI * 2; + +/** + * @property {Number} RAD_TO_DEG + * @static + */ +PIXI.RAD_TO_DEG = 180 / Math.PI; + +/** + * @property {Number} DEG_TO_RAD + * @static + */ +PIXI.DEG_TO_RAD = Math.PI / 180; + +/** + * @property {String} RETINA_PREFIX + * @protected + * @static + */ +PIXI.RETINA_PREFIX = "@2x"; + +/** + * The default render options if none are supplied to + * {{#crossLink "WebGLRenderer"}}{{/crossLink}} or {{#crossLink "CanvasRenderer"}}{{/crossLink}}. + * + * @property {Object} defaultRenderOptions + * @property {Object} defaultRenderOptions.view=null + * @property {Boolean} defaultRenderOptions.transparent=false + * @property {Boolean} defaultRenderOptions.antialias=false + * @property {Boolean} defaultRenderOptions.preserveDrawingBuffer=false + * @property {Number} defaultRenderOptions.resolution=1 + * @property {Boolean} defaultRenderOptions.clearBeforeRender=true + * @property {Boolean} defaultRenderOptions.autoResize=false + * @static +PIXI.defaultRenderOptions = { + view: null, + transparent: false, + antialias: false, + preserveDrawingBuffer: false, + resolution: 1, + clearBeforeRender: true, + autoResize: false +}; + */ + +/** +* @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. 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 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 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 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 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 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 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; + + /** + * 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) + * + * @property hitArea + * @type Rectangle|Circle|Ellipse|Polygon + */ + this.hitArea = null; + + /** + * 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; + + /** + * 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; + + /** + * The stage that this DisplayObject is connected to. + * + * @property {PIXI.Stage} stage + * @default + * @readOnly + */ + this.stage = null; + + /** + * 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; + + /** + * 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 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 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, 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; + + /** + * The rectangular area used by filters when rendering a shader for this DisplayObject. + * + * @property {PIXI.Rectangle} filterArea + * @type Rectangle + * @default + */ + this.filterArea = null; + + /** + * @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); + + /** + * @property {PIXI.Rectangle} _currentBounds - The most recently calculated bounds of this object. + * @private + */ + this._currentBounds = null; + + /** + * @property {PIXI.Rectangle} _mask - The cached mask of this object. + * @private + */ + this._mask = null; + + /** + * @property {boolean} _cacheAsBitmap - Internal cache as bitmap flag. + * @private + */ + this._cacheAsBitmap = false; + + /** + * @property {boolean} _cacheIsDirty - Internal dirty cache flag. + * @private + */ + this._cacheIsDirty = false; + +}; + +PIXI.DisplayObject.prototype.constructor = PIXI.DisplayObject; + +PIXI.DisplayObject.prototype = { + + /** + * 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) + { + var i = this.children.length; + + while (i--) + { + this.children[i].destroy(); + } + + this.children = []; + } + + this.hitArea = null; + this.parent = null; + this.stage = null; + this.worldTransform = null; + this.filterArea = null; + this.renderable = false; + + this._bounds = null; + this._currentBounds = null; + this._mask = null; + + this._destroyCachedSprite(); + + }, + + /* + * 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 (!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; + } + + this._cachedSprite.texture.destroy(true); + + this._cachedSprite = null; + + } + +}; + +// Alias for updateTransform. As used in DisplayObject container, etc. +PIXI.DisplayObject.prototype.displayObjectUpdateTransform = PIXI.DisplayObject.prototype.updateTransform; + +Object.defineProperties(PIXI.DisplayObject.prototype, { + + /** + * 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': { + + 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 () { + + 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; + + } + + } + +}); + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** + * 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. + * + * @class DisplayObjectContainer + * @extends DisplayObject + * @constructor + */ +PIXI.DisplayObjectContainer = function() +{ + PIXI.DisplayObject.call(this); + + /** + * [read-only] The array of children of this container. + * + * @property children + * @type Array(DisplayObject) + * @readOnly + */ + this.children = []; + + /** + * If `ignoreChildInput` is `false` it will allow this objects _children_ to be considered as valid for Input events. + * + * If this property is `true` then the children will _not_ be considered as valid for Input events. + * + * Note that this property isn't recursive: only immediate children are influenced, it doesn't scan further down. + * @property {boolean} ignoreChildInput + * @default + */ + this.ignoreChildInput = false; + +}; + +// constructor +PIXI.DisplayObjectContainer.prototype = Object.create( PIXI.DisplayObject.prototype ); +PIXI.DisplayObjectContainer.prototype.constructor = PIXI.DisplayObjectContainer; + +/** + * The width of the displayObjectContainer, setting this will actually modify the scale to achieve the value set + * + * @property width + * @type Number + */ +Object.defineProperty(PIXI.DisplayObjectContainer.prototype, 'width', { + + get: function() { + return this.scale.x * this.getLocalBounds().width; + }, + + set: function(value) { + + var width = this.getLocalBounds().width; + + if (width !== 0) + { + this.scale.x = value / width; + } + else + { + this.scale.x = 1; + } + + this._width = value; + } +}); + +/** + * The height of the displayObjectContainer, setting this will actually modify the scale to achieve the value set + * + * @property height + * @type Number + */ +Object.defineProperty(PIXI.DisplayObjectContainer.prototype, 'height', { + + get: function() { + return this.scale.y * this.getLocalBounds().height; + }, + + set: function(value) { + + var height = this.getLocalBounds().height; + + if (height !== 0) + { + this.scale.y = value / height; + } + else + { + this.scale.y = 1; + } + + this._height = value; + } + +}); + +/** + * Adds a child to the container. + * + * @method addChild + * @param child {DisplayObject} The DisplayObject to add to the container + * @return {DisplayObject} The child that was added. + */ +PIXI.DisplayObjectContainer.prototype.addChild = function(child) +{ + return this.addChildAt(child, this.children.length); +}; + +/** + * Adds a child to the container at a specified index. If the index is out of bounds an error will be thrown + * + * @method addChildAt + * @param child {DisplayObject} The child to add + * @param index {Number} The index to place the child in + * @return {DisplayObject} The child that was added. + */ +PIXI.DisplayObjectContainer.prototype.addChildAt = function(child, index) +{ + if(index >= 0 && index <= this.children.length) + { + if(child.parent) + { + child.parent.removeChild(child); + } + + child.parent = this; + + this.children.splice(index, 0, child); + + if(this.stage)child.setStageReference(this.stage); + + return child; + } + else + { + throw new Error(child + 'addChildAt: The index '+ index +' supplied is out of bounds ' + this.children.length); + } +}; + +/** + * Swaps the position of 2 Display Objects within this container. + * + * @method swapChildren + * @param child {DisplayObject} + * @param child2 {DisplayObject} + */ +PIXI.DisplayObjectContainer.prototype.swapChildren = function(child, child2) +{ + if(child === child2) { + return; + } + + var index1 = this.getChildIndex(child); + var index2 = this.getChildIndex(child2); + + if(index1 < 0 || index2 < 0) { + throw new Error('swapChildren: Both the supplied DisplayObjects must be a child of the caller.'); + } + + this.children[index1] = child2; + this.children[index2] = child; + +}; + +/** + * Returns the index position of a child DisplayObject instance + * + * @method getChildIndex + * @param child {DisplayObject} The DisplayObject instance to identify + * @return {Number} The index position of the child display object to identify + */ +PIXI.DisplayObjectContainer.prototype.getChildIndex = function(child) +{ + var index = this.children.indexOf(child); + if (index === -1) + { + throw new Error('The supplied DisplayObject must be a child of the caller'); + } + return index; +}; + +/** + * Changes the position of an existing child in the display object container + * + * @method setChildIndex + * @param child {DisplayObject} The child DisplayObject instance for which you want to change the index number + * @param index {Number} The resulting index number for the child display object + */ +PIXI.DisplayObjectContainer.prototype.setChildIndex = function(child, index) +{ + if (index < 0 || index >= this.children.length) + { + throw new Error('The supplied index is out of bounds'); + } + var currentIndex = this.getChildIndex(child); + this.children.splice(currentIndex, 1); //remove from old position + this.children.splice(index, 0, child); //add at new position +}; + +/** + * Returns the child at the specified index + * + * @method getChildAt + * @param index {Number} The index to get the child from + * @return {DisplayObject} The child at the given index, if any. + */ +PIXI.DisplayObjectContainer.prototype.getChildAt = function(index) +{ + if (index < 0 || index >= this.children.length) + { + throw new Error('getChildAt: Supplied index '+ index +' does not exist in the child list, or the supplied DisplayObject must be a child of the caller'); + } + return this.children[index]; + +}; + +/** + * Removes a child from the container. + * + * @method removeChild + * @param child {DisplayObject} The DisplayObject to remove + * @return {DisplayObject} The child that was removed. + */ +PIXI.DisplayObjectContainer.prototype.removeChild = function(child) +{ + var index = this.children.indexOf( child ); + if(index === -1)return; + + return this.removeChildAt( index ); +}; + +/** + * Removes a child from the specified index position. + * + * @method removeChildAt + * @param index {Number} The index to get the child from + * @return {DisplayObject} The child that was removed. + */ +PIXI.DisplayObjectContainer.prototype.removeChildAt = function(index) +{ + var child = this.getChildAt( index ); + if(this.stage) + child.removeStageReference(); + + child.parent = undefined; + this.children.splice( index, 1 ); + return child; +}; + +/** +* Removes all children from this container that are within the begin and end indexes. +* +* @method removeChildren +* @param beginIndex {Number} The beginning position. Default value is 0. +* @param endIndex {Number} The ending position. Default value is size of the container. +*/ +PIXI.DisplayObjectContainer.prototype.removeChildren = function(beginIndex, endIndex) +{ + var begin = beginIndex || 0; + var end = typeof endIndex === 'number' ? endIndex : this.children.length; + var range = end - begin; + + if (range > 0 && range <= end) + { + var removed = this.children.splice(begin, range); + for (var i = 0; i < removed.length; i++) { + var child = removed[i]; + if(this.stage) + child.removeStageReference(); + child.parent = undefined; + } + return removed; + } + else if (range === 0 && this.children.length === 0) + { + return []; + } + else + { + throw new Error( 'removeChildren: Range Error, numeric values are outside the acceptable range' ); + } +}; + +/* + * Updates the transform on all children of this container for rendering + * + * @method updateTransform + * @private + */ +PIXI.DisplayObjectContainer.prototype.updateTransform = function() +{ + if (!this.visible) + { + return; + } + + this.displayObjectUpdateTransform(); + + if (this._cacheAsBitmap) + { + return; + } + + for (var i = 0; i < this.children.length; i++) + { + this.children[i].updateTransform(); + } +}; + +// performance increase to avoid using call.. (10x faster) +PIXI.DisplayObjectContainer.prototype.displayObjectContainerUpdateTransform = PIXI.DisplayObjectContainer.prototype.updateTransform; + +/** + * Retrieves the bounds of the displayObjectContainer as a rectangle. The bounds calculation takes all visible children into consideration. + * + * @method getBounds + * @return {Rectangle} The rectangular bounding area + */ +PIXI.DisplayObjectContainer.prototype.getBounds = function() +{ + if (this.children.length === 0) + { + return PIXI.EmptyRectangle; + } + + this.updateTransform(); + + var minX = Infinity; + var minY = Infinity; + + var maxX = -Infinity; + var maxY = -Infinity; + + var childBounds; + var childMaxX; + var childMaxY; + + var childVisible = false; + + for (var i = 0; i < this.children.length; i++) + { + var child = this.children[i]; + + if (!child.visible) + { + continue; + } + + childVisible = true; + + childBounds = this.children[i].getBounds(); + + minX = minX < childBounds.x ? minX : childBounds.x; + minY = minY < childBounds.y ? minY : childBounds.y; + + childMaxX = childBounds.width + childBounds.x; + childMaxY = childBounds.height + childBounds.y; + + maxX = maxX > childMaxX ? maxX : childMaxX; + maxY = maxY > childMaxY ? maxY : childMaxY; + } + + if (!childVisible) + { + return PIXI.EmptyRectangle; + } + + var bounds = this._bounds; + + bounds.x = minX; + bounds.y = minY; + bounds.width = maxX - minX; + bounds.height = maxY - minY; + + return bounds; +}; + +/** + * Retrieves the non-global local bounds of the displayObjectContainer as a rectangle. The calculation takes all visible children into consideration. + * + * @method getLocalBounds + * @return {Rectangle} The rectangular bounding area + */ +PIXI.DisplayObjectContainer.prototype.getLocalBounds = function() +{ + var matrixCache = this.worldTransform; + + this.worldTransform = PIXI.identityMatrix; + + for (var i = 0; i < this.children.length; i++) + { + this.children[i].updateTransform(); + } + + var bounds = this.getBounds(); + + this.worldTransform = matrixCache; + + for (i = 0; i < this.children.length; i++) + { + this.children[i].updateTransform(); + } + + return bounds; +}; + +/** + * Sets the containers Stage reference. This is the Stage that this object, and all of its children, is connected to. + * + * @method setStageReference + * @param stage {Stage} the stage that the container will have as its current stage reference + */ +PIXI.DisplayObjectContainer.prototype.setStageReference = function(stage) +{ + this.stage = stage; + + for (var i=0; i < this.children.length; i++) + { + this.children[i].setStageReference(stage) + } +}; + +/** + * Removes the current stage reference from the container and all of its children. + * + * @method removeStageReference + */ +PIXI.DisplayObjectContainer.prototype.removeStageReference = function() +{ + for (var i = 0; i < this.children.length; i++) + { + this.children[i].removeStageReference(); + } + + this.stage = null; +}; + +/** +* Renders the object using the WebGL renderer +* +* @method _renderWebGL +* @param renderSession {RenderSession} +* @private +*/ +PIXI.DisplayObjectContainer.prototype._renderWebGL = function(renderSession) +{ + if (!this.visible || this.alpha <= 0) return; + + if (this._cacheAsBitmap) + { + this._renderCachedSprite(renderSession); + return; + } + + var i; + + if (this._mask || this._filters) + { + // push filter first as we need to ensure the stencil buffer is correct for any masking + if (this._filters) + { + renderSession.spriteBatch.flush(); + renderSession.filterManager.pushFilter(this._filterBlock); + } + + if (this._mask) + { + renderSession.spriteBatch.stop(); + renderSession.maskManager.pushMask(this.mask, renderSession); + renderSession.spriteBatch.start(); + } + + // simple render children! + for (i = 0; i < this.children.length; i++) + { + this.children[i]._renderWebGL(renderSession); + } + + renderSession.spriteBatch.stop(); + + if (this._mask) renderSession.maskManager.popMask(this._mask, renderSession); + if (this._filters) renderSession.filterManager.popFilter(); + + renderSession.spriteBatch.start(); + } + else + { + // simple render children! + for (i = 0; i < this.children.length; i++) + { + this.children[i]._renderWebGL(renderSession); + } + } +}; + +/** +* Renders the object using the Canvas renderer +* +* @method _renderCanvas +* @param renderSession {RenderSession} +* @private +*/ +PIXI.DisplayObjectContainer.prototype._renderCanvas = function(renderSession) +{ + if (this.visible === false || this.alpha === 0) return; + + if (this._cacheAsBitmap) + { + this._renderCachedSprite(renderSession); + return; + } + + if (this._mask) + { + renderSession.maskManager.pushMask(this._mask, renderSession); + } + + for (var i = 0; i < this.children.length; i++) + { + this.children[i]._renderCanvas(renderSession); + } + + if (this._mask) + { + renderSession.maskManager.popMask(renderSession); + } + +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** + * The Sprite object is the base for all textured objects that are rendered to the screen + * + * @class Sprite + * @extends DisplayObjectContainer + * @constructor + * @param texture {Texture} The texture for this sprite + * + * 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 + */ +PIXI.Sprite = function(texture) +{ + PIXI.DisplayObjectContainer.call(this); + + /** + * The anchor sets the origin point of the texture. + * The default is 0,0 this means the texture's origin is the top left + * 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 + * + * @property anchor + * @type Point + */ + this.anchor = new PIXI.Point(); + + /** + * The texture that the sprite is using + * + * @property texture + * @type Texture + */ + this.texture = texture || PIXI.Texture.emptyTexture; + + /** + * The width of the sprite (this is initially set by the texture) + * + * @property _width + * @type Number + * @private + */ + this._width = 0; + + /** + * The height of the sprite (this is initially set by the texture) + * + * @property _height + * @type Number + * @private + */ + this._height = 0; + + /** + * The tint applied to the sprite. This is a hex value. A value of 0xFFFFFF will remove any tint effect. + * + * @property tint + * @type Number + * @default 0xFFFFFF + */ + this.tint = 0xFFFFFF; + + /** + * The tint applied to the sprite. This is a hex value. A value of 0xFFFFFF will remove any tint effect. + * + * @property cachedTint + * @private + * @type Number + * @default -1 + */ + this.cachedTint = -1; + + /** + * A canvas that contains the tinted version of the Sprite (in Canvas mode, WebGL doesn't populate this) + * + * @property tintedTexture + * @type Canvas + * @default null + */ + this.tintedTexture = null; + + /** + * The blend mode to be applied to the sprite. Set to PIXI.blendModes.NORMAL to remove any blend mode. + * + * Warning: You cannot have a blend mode and a filter active on the same Sprite. Doing so will render the sprite invisible. + * + * @property blendMode + * @type Number + * @default PIXI.blendModes.NORMAL; + */ + this.blendMode = PIXI.blendModes.NORMAL; + + /** + * The shader that will be used to render the texture to the stage. Set to null to remove a current shader. + * + * @property shader + * @type AbstractFilter + * @default null + */ + this.shader = null; + + /** + * Controls if this Sprite is processed by the core Phaser game loops and Group loops. + * + * @property exists + * @type Boolean + * @default true + */ + this.exists = true; + + if (this.texture.baseTexture.hasLoaded) + { + this.onTextureUpdate(); + } + + this.renderable = true; + +}; + +// constructor +PIXI.Sprite.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); +PIXI.Sprite.prototype.constructor = PIXI.Sprite; + +/** + * The width of the sprite, setting this will actually modify the scale to achieve the value set + * + * @property width + * @type Number + */ +Object.defineProperty(PIXI.Sprite.prototype, 'width', { + + get: function() { + return this.scale.x * this.texture.frame.width; + }, + + set: function(value) { + this.scale.x = value / this.texture.frame.width; + this._width = value; + } + +}); + +/** + * The height of the sprite, setting this will actually modify the scale to achieve the value set + * + * @property height + * @type Number + */ +Object.defineProperty(PIXI.Sprite.prototype, 'height', { + + get: function() { + return this.scale.y * this.texture.frame.height; + }, + + set: function(value) { + this.scale.y = value / this.texture.frame.height; + this._height = value; + } + +}); + +/** + * Sets the texture of the sprite. Be warned that this doesn't remove or destroy the previous + * texture this Sprite was using. + * + * @method setTexture + * @param texture {Texture} The PIXI texture that is displayed by the sprite + * @param [destroy=false] {boolean} Call Texture.destroy on the current texture before replacing it with the new one? + */ +PIXI.Sprite.prototype.setTexture = function(texture, destroyBase) +{ + if (destroyBase !== undefined) + { + this.texture.baseTexture.destroy(); + } + + // Over-ridden by loadTexture as needed + this.texture.baseTexture.skipRender = false; + this.texture = texture; + this.texture.valid = true; + this.cachedTint = -1; +}; + +/** + * When the texture is updated, this event will fire to update the scale and frame + * + * @method onTextureUpdate + * @param event + * @private + */ +PIXI.Sprite.prototype.onTextureUpdate = function() +{ + // so if _width is 0 then width was not set.. + if (this._width) this.scale.x = this._width / this.texture.frame.width; + if (this._height) this.scale.y = this._height / this.texture.frame.height; +}; + +/** +* Returns the bounds of the Sprite as a rectangle. +* The bounds calculation takes the worldTransform into account. +* +* It is important to note that the transform is not updated when you call this method. +* So if this Sprite is the child of a Display Object which has had its transform +* updated since the last render pass, those changes will not yet have been applied +* to this Sprites worldTransform. If you need to ensure that all parent transforms +* are factored into this getBounds operation then you should call `updateTransform` +* on the root most object in this Sprites display list first. +* +* @method getBounds +* @param matrix {Matrix} the transformation matrix of the sprite +* @return {Rectangle} the framing rectangle +*/ +PIXI.Sprite.prototype.getBounds = function(matrix) +{ + var width = this.texture.frame.width; + var height = this.texture.frame.height; + + var w0 = width * (1-this.anchor.x); + var w1 = width * -this.anchor.x; + + var h0 = height * (1-this.anchor.y); + var h1 = height * -this.anchor.y; + + var worldTransform = matrix || this.worldTransform; + + var a = worldTransform.a; + var b = worldTransform.b; + var c = worldTransform.c; + var d = worldTransform.d; + var tx = worldTransform.tx; + var ty = worldTransform.ty; + + var maxX = -Infinity; + var maxY = -Infinity; + + var minX = Infinity; + var minY = Infinity; + + if (b === 0 && c === 0) + { + // scale may be negative! + if (a < 0) + { + a *= -1; + var temp = w0; + w0 = -w1; + w1 = -temp; + } + + if (d < 0) + { + d *= -1; + var temp = h0; + h0 = -h1; + h1 = -temp; + } + + // this means there is no rotation going on right? RIGHT? + // if thats the case then we can avoid checking the bound values! yay + minX = a * w1 + tx; + maxX = a * w0 + tx; + minY = d * h1 + ty; + maxY = d * h0 + ty; + } + else + { + var x1 = a * w1 + c * h1 + tx; + var y1 = d * h1 + b * w1 + ty; + + var x2 = a * w0 + c * h1 + tx; + var y2 = d * h1 + b * w0 + ty; + + var x3 = a * w0 + c * h0 + tx; + var y3 = d * h0 + b * w0 + ty; + + var x4 = a * w1 + c * h0 + tx; + var y4 = d * h0 + b * w1 + ty; + + minX = x1 < minX ? x1 : minX; + minX = x2 < minX ? x2 : minX; + minX = x3 < minX ? x3 : minX; + minX = x4 < minX ? x4 : minX; + + minY = y1 < minY ? y1 : minY; + minY = y2 < minY ? y2 : minY; + minY = y3 < minY ? y3 : minY; + minY = y4 < minY ? y4 : minY; + + maxX = x1 > maxX ? x1 : maxX; + maxX = x2 > maxX ? x2 : maxX; + maxX = x3 > maxX ? x3 : maxX; + maxX = x4 > maxX ? x4 : maxX; + + maxY = y1 > maxY ? y1 : maxY; + maxY = y2 > maxY ? y2 : maxY; + maxY = y3 > maxY ? y3 : maxY; + maxY = y4 > maxY ? y4 : maxY; + } + + var bounds = this._bounds; + + bounds.x = minX; + bounds.width = maxX - minX; + + bounds.y = minY; + bounds.height = maxY - minY; + + // store a reference so that if this function gets called again in the render cycle we do not have to recalculate + this._currentBounds = bounds; + + return bounds; +}; + +/** +* Renders the object using the WebGL renderer +* +* @method _renderWebGL +* @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. +* @private +*/ +PIXI.Sprite.prototype._renderWebGL = function(renderSession, matrix) +{ + // if the sprite is not visible or the alpha is 0 then no need to render this element + if (!this.visible || this.alpha <= 0 || !this.renderable) return; + + // They provided an alternative rendering matrix, so use it + var wt = this.worldTransform; + + if (matrix) + { + wt = matrix; + } + + // A quick check to see if this element has a mask or a filter. + if (this._mask || this._filters) + { + var spriteBatch = renderSession.spriteBatch; + + // push filter first as we need to ensure the stencil buffer is correct for any masking + if (this._filters) + { + spriteBatch.flush(); + renderSession.filterManager.pushFilter(this._filterBlock); + } + + if (this._mask) + { + spriteBatch.stop(); + renderSession.maskManager.pushMask(this.mask, renderSession); + spriteBatch.start(); + } + + // add this sprite to the batch + spriteBatch.render(this); + + // now loop through the children and make sure they get rendered + for (var i = 0; i < this.children.length; i++) + { + this.children[i]._renderWebGL(renderSession); + } + + // time to stop the sprite batch as either a mask element or a filter draw will happen next + spriteBatch.stop(); + + if (this._mask) renderSession.maskManager.popMask(this._mask, renderSession); + if (this._filters) renderSession.filterManager.popFilter(); + + spriteBatch.start(); + } + else + { + renderSession.spriteBatch.render(this); + + // Render children! + for (var i = 0; i < this.children.length; i++) + { + this.children[i]._renderWebGL(renderSession, wt); + } + + } +}; + +/** +* Renders the object using the Canvas renderer +* +* @method _renderCanvas +* @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. +* @private +*/ +PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix) +{ + // If the sprite is not visible or the alpha is 0 then no need to render this element + if (!this.visible || this.alpha === 0 || !this.renderable || this.texture.crop.width <= 0 || this.texture.crop.height <= 0) + { + return; + } + + var wt = this.worldTransform; + + // If they provided an alternative rendering matrix then use it + if (matrix) + { + wt = matrix; + } + + if (this.blendMode !== renderSession.currentBlendMode) + { + renderSession.currentBlendMode = this.blendMode; + renderSession.context.globalCompositeOperation = PIXI.blendModesCanvas[renderSession.currentBlendMode]; + } + + if (this._mask) + { + renderSession.maskManager.pushMask(this._mask, renderSession); + } + + // Ignore null sources + if (this.texture.valid) + { + var resolution = this.texture.baseTexture.resolution / renderSession.resolution; + + renderSession.context.globalAlpha = this.worldAlpha; + + // If smoothingEnabled is supported and we need to change the smoothing property for this texture + if (renderSession.smoothProperty && renderSession.scaleMode !== this.texture.baseTexture.scaleMode) + { + renderSession.scaleMode = this.texture.baseTexture.scaleMode; + renderSession.context[renderSession.smoothProperty] = (renderSession.scaleMode === PIXI.scaleModes.LINEAR); + } + + // If the texture is trimmed we offset by the trim x/y, otherwise we use the frame dimensions + var dx = (this.texture.trim) ? this.texture.trim.x - this.anchor.x * this.texture.trim.width : this.anchor.x * -this.texture.frame.width; + var dy = (this.texture.trim) ? this.texture.trim.y - this.anchor.y * this.texture.trim.height : this.anchor.y * -this.texture.frame.height; + + var tx = (wt.tx * renderSession.resolution) + renderSession.shakeX; + var ty = (wt.ty * renderSession.resolution) + renderSession.shakeY; + + // Allow for pixel rounding + if (renderSession.roundPixels) + { + renderSession.context.setTransform(wt.a, wt.b, wt.c, wt.d, tx | 0, ty | 0); + dx |= 0; + dy |= 0; + } + else + { + renderSession.context.setTransform(wt.a, wt.b, wt.c, wt.d, tx, ty); + } + + var cw = this.texture.crop.width; + var ch = this.texture.crop.height; + + dx /= resolution; + dy /= resolution; + + if (this.tint !== 0xFFFFFF) + { + if (this.texture.requiresReTint || this.cachedTint !== this.tint) + { + this.tintedTexture = PIXI.CanvasTinter.getTintedTexture(this, this.tint); + + this.cachedTint = this.tint; + this.texture.requiresReTint = false; + } + + renderSession.context.drawImage(this.tintedTexture, 0, 0, cw, ch, dx, dy, cw / resolution, ch / resolution); + } + else + { + var cx = this.texture.crop.x; + var cy = this.texture.crop.y; + renderSession.context.drawImage(this.texture.baseTexture.source, cx, cy, cw, ch, dx, dy, cw / resolution, ch / resolution); + } + } + + for (var i = 0; i < this.children.length; i++) + { + this.children[i]._renderCanvas(renderSession); + } + + if (this._mask) + { + renderSession.maskManager.popMask(renderSession); + } + +}; + +/** + * @author Mat Groves http://matgroves.com/ + */ + +/** + * The SpriteBatch class is a really fast version of the DisplayObjectContainer + * built solely for speed, so use when you need a lot of sprites or particles. + * And it's extremely easy to use : + + var container = new PIXI.SpriteBatch(); + + stage.addChild(container); + + for(var i = 0; i < 100; i++) + { + var sprite = new PIXI.Sprite.fromImage("myImage.png"); + container.addChild(sprite); + } + * And here you have a hundred sprites that will be renderer at the speed of light + * + * @class SpriteBatch + * @constructor + * @param texture {Texture} + */ +PIXI.SpriteBatch = function(texture) +{ + PIXI.DisplayObjectContainer.call( this); + + this.textureThing = texture; + + this.ready = false; +}; + +PIXI.SpriteBatch.prototype = Object.create(PIXI.DisplayObjectContainer.prototype); +PIXI.SpriteBatch.prototype.constructor = PIXI.SpriteBatch; + +/* + * Initialises the spriteBatch + * + * @method initWebGL + * @param gl {WebGLContext} the current WebGL drawing context + */ +PIXI.SpriteBatch.prototype.initWebGL = function(gl) +{ + // TODO only one needed for the whole engine really? + this.fastSpriteBatch = new PIXI.WebGLFastSpriteBatch(gl); + + this.ready = true; +}; + +/* + * Updates the object transform for rendering + * + * @method updateTransform + * @private + */ +PIXI.SpriteBatch.prototype.updateTransform = function() +{ + // TODO don't need to! + this.displayObjectUpdateTransform(); + // PIXI.DisplayObjectContainer.prototype.updateTransform.call( this ); +}; + +/** +* Renders the object using the WebGL renderer +* +* @method _renderWebGL +* @param renderSession {RenderSession} +* @private +*/ +PIXI.SpriteBatch.prototype._renderWebGL = function(renderSession) +{ + if (!this.visible || this.alpha <= 0 || !this.children.length) return; + + if (!this.ready) + { + this.initWebGL(renderSession.gl); + } + + if (this.fastSpriteBatch.gl !== renderSession.gl) + { + this.fastSpriteBatch.setContext(renderSession.gl); + } + + renderSession.spriteBatch.stop(); + + renderSession.shaderManager.setShader(renderSession.shaderManager.fastShader); + + this.fastSpriteBatch.begin(this, renderSession); + this.fastSpriteBatch.render(this); + + renderSession.spriteBatch.start(); + +}; + +/** +* Renders the object using the Canvas renderer +* +* @method _renderCanvas +* @param renderSession {RenderSession} +* @private +*/ +PIXI.SpriteBatch.prototype._renderCanvas = function(renderSession) +{ + if (!this.visible || this.alpha <= 0 || !this.children.length) return; + + var context = renderSession.context; + + context.globalAlpha = this.worldAlpha; + + this.displayObjectUpdateTransform(); + + var transform = this.worldTransform; + + var isRotated = true; + + for (var i = 0; i < this.children.length; i++) + { + var child = this.children[i]; + + if (!child.visible) continue; + + var texture = child.texture; + var frame = texture.frame; + + context.globalAlpha = this.worldAlpha * child.alpha; + + if (child.rotation % (Math.PI * 2) === 0) + { + if (isRotated) + { + context.setTransform(transform.a, transform.b, transform.c, transform.d, transform.tx, transform.ty); + isRotated = false; + } + + // this is the fastest way to optimise! - if rotation is 0 then we can avoid any kind of setTransform call + context.drawImage(texture.baseTexture.source, + frame.x, + frame.y, + frame.width, + frame.height, + ((child.anchor.x) * (-frame.width * child.scale.x) + child.position.x + 0.5 + renderSession.shakeX) | 0, + ((child.anchor.y) * (-frame.height * child.scale.y) + child.position.y + 0.5 + renderSession.shakeY) | 0, + frame.width * child.scale.x, + frame.height * child.scale.y); + } + else + { + if (!isRotated) isRotated = true; + + child.displayObjectUpdateTransform(); + + var childTransform = child.worldTransform; + var tx = (childTransform.tx * renderSession.resolution) + renderSession.shakeX; + var ty = (childTransform.ty * renderSession.resolution) + renderSession.shakeY; + + // allow for trimming + + if (renderSession.roundPixels) + { + context.setTransform(childTransform.a, childTransform.b, childTransform.c, childTransform.d, tx | 0, ty | 0); + } + else + { + context.setTransform(childTransform.a, childTransform.b, childTransform.c, childTransform.d, tx, ty); + } + + context.drawImage(texture.baseTexture.source, + frame.x, + frame.y, + frame.width, + frame.height, + ((child.anchor.x) * (-frame.width) + 0.5) | 0, + ((child.anchor.y) * (-frame.height) + 0.5) | 0, + frame.width, + frame.height); + } + } + +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** + * Converts a hex color number to an [R, G, B] array + * + * @method hex2rgb + * @param hex {Number} + */ +PIXI.hex2rgb = function(hex) { + return [(hex >> 16 & 0xFF) / 255, ( hex >> 8 & 0xFF) / 255, (hex & 0xFF)/ 255]; +}; + +/** + * Converts a color as an [R, G, B] array to a hex number + * + * @method rgb2hex + * @param rgb {Array} + */ +PIXI.rgb2hex = function(rgb) { + return ((rgb[0]*255 << 16) + (rgb[1]*255 << 8) + rgb[2]*255); +}; + +/** + * Checks whether the Canvas BlendModes are supported by the current browser for drawImage + * + * @method canUseNewCanvasBlendModes + * @return {Boolean} whether they are supported + */ +PIXI.canUseNewCanvasBlendModes = function() +{ + if (document === undefined) return false; + + var pngHead = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABAQMAAADD8p2OAAAAA1BMVEX/'; + var pngEnd = 'AAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg=='; + + var magenta = new Image(); + magenta.src = pngHead + 'AP804Oa6' + pngEnd; + + var yellow = new Image(); + yellow.src = pngHead + '/wCKxvRF' + pngEnd; + + var canvas = PIXI.CanvasPool.create(this, 6, 1); + var context = canvas.getContext('2d'); + context.globalCompositeOperation = 'multiply'; + context.drawImage(magenta, 0, 0); + context.drawImage(yellow, 2, 0); + + if (!context.getImageData(2,0,1,1)) + { + return false; + } + + var data = context.getImageData(2,0,1,1).data; + + PIXI.CanvasPool.remove(this); + + return (data[0] === 255 && data[1] === 0 && data[2] === 0); + +}; + +/** + * Given a number, this function returns the closest number that is a power of two + * this function is taken from Starling Framework as its pretty neat ;) + * + * @method getNextPowerOfTwo + * @param number {Number} + * @return {Number} the closest number that is a power of two + */ +PIXI.getNextPowerOfTwo = function(number) +{ + if (number > 0 && (number & (number - 1)) === 0) // see: http://goo.gl/D9kPj + return number; + else + { + var result = 1; + while (result < number) result <<= 1; + return result; + } +}; + +/** + * checks if the given width and height make a power of two texture + * @method isPowerOfTwo + * @param width {Number} + * @param height {Number} + * @return {Boolean} + */ +PIXI.isPowerOfTwo = function(width, height) +{ + return (width > 0 && (width & (width - 1)) === 0 && height > 0 && (height & (height - 1)) === 0); + +}; + +/** +* @author Richard Davey +* @copyright 2016 Photon Storm Ltd. +* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} +*/ + +/** +* The CanvasPool is a global static object that allows Pixi and Phaser to pool canvas DOM elements. +* +* @class CanvasPool +* @static +*/ +PIXI.CanvasPool = { + + /** + * Creates a new Canvas DOM element, or pulls one from the pool if free. + * + * @method create + * @static + * @param parent {any} The parent of the canvas element. + * @param width {number} The width of the canvas element. + * @param height {number} The height of the canvas element. + * @return {HTMLCanvasElement} The canvas element. + */ + create: function (parent, width, height) { + + var idx = PIXI.CanvasPool.getFirst(); + var canvas; + + if (idx === -1) + { + var container = { + parent: parent, + canvas: document.createElement('canvas') + } + + PIXI.CanvasPool.pool.push(container); + + canvas = container.canvas; + } + else + { + PIXI.CanvasPool.pool[idx].parent = parent; + + canvas = PIXI.CanvasPool.pool[idx].canvas; + } + + if (width !== undefined) + { + canvas.width = width; + canvas.height = height; + } + + return canvas; + + }, + + /** + * Gets the first free canvas index from the pool. + * + * @method getFirst + * @static + * @return {number} + */ + getFirst: function () { + + var pool = PIXI.CanvasPool.pool; + + for (var i = 0; i < pool.length; i++) + { + if (!pool[i].parent) + { + return i; + } + } + + return -1; + + }, + + /** + * Removes the parent from a canvas element from the pool, freeing it up for re-use. + * + * @method remove + * @param parent {any} The parent of the canvas element. + * @static + */ + remove: function (parent) { + + var pool = PIXI.CanvasPool.pool; + + for (var i = 0; i < pool.length; i++) + { + if (pool[i].parent === parent) + { + pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; + } + } + + }, + + /** + * Removes the parent from a canvas element from the pool, freeing it up for re-use. + * + * @method removeByCanvas + * @param canvas {HTMLCanvasElement} The canvas element to remove + * @static + */ + removeByCanvas: function (canvas) { + + var pool = PIXI.CanvasPool.pool; + + for (var i = 0; i < pool.length; i++) + { + if (pool[i].canvas === canvas) + { + pool[i].parent = null; + pool[i].canvas.width = 1; + pool[i].canvas.height = 1; + } + } + + }, + + /** + * Gets the total number of used canvas elements in the pool. + * + * @method getTotal + * @static + * @return {number} The number of in-use (parented) canvas elements in the pool. + */ + getTotal: function () { + + var pool = PIXI.CanvasPool.pool; + var c = 0; + + for (var i = 0; i < pool.length; i++) + { + if (pool[i].parent) + { + c++; + } + } + + return c; + + }, + + /** + * Gets the total number of free canvas elements in the pool. + * + * @method getFree + * @static + * @return {number} The number of free (un-parented) canvas elements in the pool. + */ + getFree: function () { + + var pool = PIXI.CanvasPool.pool; + var c = 0; + + for (var i = 0; i < pool.length; i++) + { + if (!pool[i].parent) + { + c++; + } + } + + return c; + + } + +}; + +/** + * The pool into which the canvas dom elements are placed. + * + * @property pool + * @type Array + * @static + */ +PIXI.CanvasPool.pool = []; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** +* @method initDefaultShaders +* @static +* @private +*/ +PIXI.initDefaultShaders = function() +{ +}; + +/** +* @method CompileVertexShader +* @static +* @param gl {WebGLContext} the current WebGL drawing context +* @param shaderSrc {Array} +* @return {Any} +*/ +PIXI.CompileVertexShader = function(gl, shaderSrc) +{ + return PIXI._CompileShader(gl, shaderSrc, gl.VERTEX_SHADER); +}; + +/** +* @method CompileFragmentShader +* @static +* @param gl {WebGLContext} the current WebGL drawing context +* @param shaderSrc {Array} +* @return {Any} +*/ +PIXI.CompileFragmentShader = function(gl, shaderSrc) +{ + return PIXI._CompileShader(gl, shaderSrc, gl.FRAGMENT_SHADER); +}; + +/** +* @method _CompileShader +* @static +* @private +* @param gl {WebGLContext} the current WebGL drawing context +* @param shaderSrc {Array} +* @param shaderType {Number} +* @return {Any} +*/ +PIXI._CompileShader = function(gl, shaderSrc, shaderType) +{ + var src = shaderSrc; + + if (Array.isArray(shaderSrc)) + { + src = shaderSrc.join("\n"); + } + + var shader = gl.createShader(shaderType); + gl.shaderSource(shader, src); + gl.compileShader(shader); + + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) + { + window.console.log(gl.getShaderInfoLog(shader)); + return null; + } + + return shader; +}; + +/** +* @method compileProgram +* @static +* @param gl {WebGLContext} the current WebGL drawing context +* @param vertexSrc {Array} +* @param fragmentSrc {Array} +* @return {Any} +*/ +PIXI.compileProgram = function(gl, vertexSrc, fragmentSrc) +{ + var fragmentShader = PIXI.CompileFragmentShader(gl, fragmentSrc); + var vertexShader = PIXI.CompileVertexShader(gl, vertexSrc); + + var shaderProgram = gl.createProgram(); + + gl.attachShader(shaderProgram, vertexShader); + gl.attachShader(shaderProgram, fragmentShader); + gl.linkProgram(shaderProgram); + + if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) + { + window.console.log(gl.getProgramInfoLog(shaderProgram)); + window.console.log("Could not initialise shaders"); + } + + return shaderProgram; +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + * @author Richard Davey http://www.photonstorm.com @photonstorm + */ + +/** +* @class PixiShader +* @constructor +* @param gl {WebGLContext} the current WebGL drawing context +*/ +PIXI.PixiShader = function(gl) +{ + /** + * @property _UID + * @type Number + * @private + */ + this._UID = PIXI._UID++; + + /** + * @property gl + * @type WebGLContext + */ + this.gl = gl; + + /** + * The WebGL program. + * @property program + * @type Any + */ + this.program = null; + + /** + * The fragment shader. + * @property fragmentSrc + * @type Array + */ + this.fragmentSrc = [ + 'precision lowp float;', + 'varying vec2 vTextureCoord;', + 'varying vec4 vColor;', + 'uniform sampler2D uSampler;', + 'void main(void) {', + ' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;', + '}' + ]; + + /** + * A local texture counter for multi-texture shaders. + * @property textureCount + * @type Number + */ + this.textureCount = 0; + + /** + * A local flag + * @property firstRun + * @type Boolean + * @private + */ + this.firstRun = true; + + /** + * A dirty flag + * @property dirty + * @type Boolean + */ + this.dirty = true; + + /** + * Uniform attributes cache. + * @property attributes + * @type Array + * @private + */ + this.attributes = []; + + this.init(); +}; + +PIXI.PixiShader.prototype.constructor = PIXI.PixiShader; + +/** +* Initialises the shader. +* +* @method init +*/ +PIXI.PixiShader.prototype.init = function() +{ + var gl = this.gl; + + var program = PIXI.compileProgram(gl, this.vertexSrc || PIXI.PixiShader.defaultVertexSrc, this.fragmentSrc); + + gl.useProgram(program); + + // get and store the uniforms for the shader + this.uSampler = gl.getUniformLocation(program, 'uSampler'); + this.projectionVector = gl.getUniformLocation(program, 'projectionVector'); + this.offsetVector = gl.getUniformLocation(program, 'offsetVector'); + this.dimensions = gl.getUniformLocation(program, 'dimensions'); + + // get and store the attributes + this.aVertexPosition = gl.getAttribLocation(program, 'aVertexPosition'); + this.aTextureCoord = gl.getAttribLocation(program, 'aTextureCoord'); + this.colorAttribute = gl.getAttribLocation(program, 'aColor'); + + // Begin worst hack eva // + + // WHY??? ONLY on my chrome pixel the line above returns -1 when using filters? + // maybe its something to do with the current state of the gl context. + // I'm convinced this is a bug in the chrome browser as there is NO reason why this should be returning -1 especially as it only manifests on my chrome pixel + // If theres any webGL people that know why could happen please help :) + if(this.colorAttribute === -1) + { + this.colorAttribute = 2; + } + + this.attributes = [this.aVertexPosition, this.aTextureCoord, this.colorAttribute]; + + // End worst hack eva // + + // add those custom shaders! + for (var key in this.uniforms) + { + // get the uniform locations.. + this.uniforms[key].uniformLocation = gl.getUniformLocation(program, key); + } + + this.initUniforms(); + + this.program = program; +}; + +/** +* Initialises the shader uniform values. +* +* 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 initUniforms +*/ +PIXI.PixiShader.prototype.initUniforms = function() +{ + this.textureCount = 1; + var gl = this.gl; + var uniform; + + for (var key in this.uniforms) + { + uniform = this.uniforms[key]; + + var type = uniform.type; + + if (type === 'sampler2D') + { + uniform._init = false; + + if (uniform.value !== null) + { + this.initSampler2D(uniform); + } + } + else if (type === 'mat2' || type === 'mat3' || type === 'mat4') + { + // These require special handling + uniform.glMatrix = true; + uniform.glValueLength = 1; + + if (type === 'mat2') + { + uniform.glFunc = gl.uniformMatrix2fv; + } + else if (type === 'mat3') + { + uniform.glFunc = gl.uniformMatrix3fv; + } + else if (type === 'mat4') + { + uniform.glFunc = gl.uniformMatrix4fv; + } + } + else + { + // GL function reference + uniform.glFunc = gl['uniform' + type]; + + if (type === '2f' || type === '2i') + { + uniform.glValueLength = 2; + } + else if (type === '3f' || type === '3i') + { + uniform.glValueLength = 3; + } + else if (type === '4f' || type === '4i') + { + uniform.glValueLength = 4; + } + else + { + uniform.glValueLength = 1; + } + } + } + +}; + +/** +* Initialises a Sampler2D uniform (which may only be available later on after initUniforms once the texture has loaded) +* +* @method initSampler2D +*/ +PIXI.PixiShader.prototype.initSampler2D = function(uniform) +{ + if (!uniform.value || !uniform.value.baseTexture || !uniform.value.baseTexture.hasLoaded) + { + return; + } + + var gl = this.gl; + + gl.activeTexture(gl['TEXTURE' + this.textureCount]); + gl.bindTexture(gl.TEXTURE_2D, uniform.value.baseTexture._glTextures[gl.id]); + + // Extended texture data + if (uniform.textureData) + { + var data = uniform.textureData; + + // GLTexture = mag linear, min linear_mipmap_linear, wrap repeat + gl.generateMipmap(gl.TEXTURE_2D); + // GLTextureLinear = mag/min linear, wrap clamp + // GLTextureNearestRepeat = mag/min NEAREST, wrap repeat + // GLTextureNearest = mag/min nearest, wrap clamp + // AudioTexture = whatever + luminance + width 512, height 2, border 0 + // KeyTexture = whatever + luminance + width 256, height 2, border 0 + + // magFilter can be: gl.LINEAR, gl.LINEAR_MIPMAP_LINEAR or gl.NEAREST + // wrapS/T can be: gl.CLAMP_TO_EDGE or gl.REPEAT + + var magFilter = (data.magFilter) ? data.magFilter : gl.LINEAR; + var minFilter = (data.minFilter) ? data.minFilter : gl.LINEAR; + var wrapS = (data.wrapS) ? data.wrapS : gl.CLAMP_TO_EDGE; + var wrapT = (data.wrapT) ? data.wrapT : gl.CLAMP_TO_EDGE; + var format = (data.luminance) ? gl.LUMINANCE : gl.RGBA; + + if (data.repeat) + { + wrapS = gl.REPEAT; + wrapT = gl.REPEAT; + } + + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, !!data.flipY); + + if (data.width) + { + var width = (data.width) ? data.width : 512; + var height = (data.height) ? data.height : 2; + var border = (data.border) ? data.border : 0; + + // void texImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, ArrayBufferView? pixels); + gl.texImage2D(gl.TEXTURE_2D, 0, format, width, height, border, format, gl.UNSIGNED_BYTE, null); + } + else + { + // void texImage2D(GLenum target, GLint level, GLenum internalformat, GLenum format, GLenum type, ImageData? pixels); + gl.texImage2D(gl.TEXTURE_2D, 0, format, gl.RGBA, gl.UNSIGNED_BYTE, uniform.value.baseTexture.source); + } + + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, magFilter); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, wrapS); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, wrapT); + } + + gl.uniform1i(uniform.uniformLocation, this.textureCount); + + uniform._init = true; + + this.textureCount++; + +}; + +/** +* Updates the shader uniform values. +* +* @method syncUniforms +*/ +PIXI.PixiShader.prototype.syncUniforms = function() +{ + this.textureCount = 1; + var uniform; + var gl = this.gl; + + // This would probably be faster in an array and it would guarantee key order + for (var key in this.uniforms) + { + uniform = this.uniforms[key]; + + if (uniform.glValueLength === 1) + { + if (uniform.glMatrix === true) + { + uniform.glFunc.call(gl, uniform.uniformLocation, uniform.transpose, uniform.value); + } + else + { + uniform.glFunc.call(gl, uniform.uniformLocation, uniform.value); + } + } + else if (uniform.glValueLength === 2) + { + uniform.glFunc.call(gl, uniform.uniformLocation, uniform.value.x, uniform.value.y); + } + else if (uniform.glValueLength === 3) + { + uniform.glFunc.call(gl, uniform.uniformLocation, uniform.value.x, uniform.value.y, uniform.value.z); + } + else if (uniform.glValueLength === 4) + { + uniform.glFunc.call(gl, uniform.uniformLocation, uniform.value.x, uniform.value.y, uniform.value.z, uniform.value.w); + } + else if (uniform.type === 'sampler2D') + { + if (uniform._init) + { + gl.activeTexture(gl['TEXTURE' + this.textureCount]); + + if(uniform.value.baseTexture._dirty[gl.id]) + { + PIXI.instances[gl.id].updateTexture(uniform.value.baseTexture); + } + else + { + // bind the current texture + gl.bindTexture(gl.TEXTURE_2D, uniform.value.baseTexture._glTextures[gl.id]); + } + + // gl.bindTexture(gl.TEXTURE_2D, uniform.value.baseTexture._glTextures[gl.id] || PIXI.createWebGLTexture( uniform.value.baseTexture, gl)); + gl.uniform1i(uniform.uniformLocation, this.textureCount); + this.textureCount++; + } + else + { + this.initSampler2D(uniform); + } + } + } + +}; + +/** +* Destroys the shader. +* +* @method destroy +*/ +PIXI.PixiShader.prototype.destroy = function() +{ + this.gl.deleteProgram( this.program ); + this.uniforms = null; + this.gl = null; + + this.attributes = null; +}; + +/** +* The Default Vertex shader source. +* +* @property defaultVertexSrc +* @type String +*/ +PIXI.PixiShader.defaultVertexSrc = [ + 'attribute vec2 aVertexPosition;', + 'attribute vec2 aTextureCoord;', + 'attribute vec4 aColor;', + + 'uniform vec2 projectionVector;', + 'uniform vec2 offsetVector;', + + 'varying vec2 vTextureCoord;', + 'varying vec4 vColor;', + + 'const vec2 center = vec2(-1.0, 1.0);', + + 'void main(void) {', + ' gl_Position = vec4( ((aVertexPosition + offsetVector) / projectionVector) + center , 0.0, 1.0);', + ' vTextureCoord = aTextureCoord;', + ' vColor = vec4(aColor.rgb * aColor.a, aColor.a);', + '}' +]; +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** +* @class PixiFastShader +* @constructor +* @param gl {WebGLContext} the current WebGL drawing context +*/ +PIXI.PixiFastShader = function(gl) +{ + /** + * @property _UID + * @type Number + * @private + */ + this._UID = PIXI._UID++; + + /** + * @property gl + * @type WebGLContext + */ + this.gl = gl; + + /** + * The WebGL program. + * @property program + * @type Any + */ + this.program = null; + + /** + * The fragment shader. + * @property fragmentSrc + * @type Array + */ + this.fragmentSrc = [ + 'precision lowp float;', + 'varying vec2 vTextureCoord;', + 'varying float vColor;', + 'uniform sampler2D uSampler;', + 'void main(void) {', + ' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;', + '}' + ]; + + /** + * The vertex shader. + * @property vertexSrc + * @type Array + */ + this.vertexSrc = [ + 'attribute vec2 aVertexPosition;', + 'attribute vec2 aPositionCoord;', + 'attribute vec2 aScale;', + 'attribute float aRotation;', + 'attribute vec2 aTextureCoord;', + 'attribute float aColor;', + + 'uniform vec2 projectionVector;', + 'uniform vec2 offsetVector;', + 'uniform mat3 uMatrix;', + + 'varying vec2 vTextureCoord;', + 'varying float vColor;', + + 'const vec2 center = vec2(-1.0, 1.0);', + + 'void main(void) {', + ' vec2 v;', + ' vec2 sv = aVertexPosition * aScale;', + ' v.x = (sv.x) * cos(aRotation) - (sv.y) * sin(aRotation);', + ' v.y = (sv.x) * sin(aRotation) + (sv.y) * cos(aRotation);', + ' v = ( uMatrix * vec3(v + aPositionCoord , 1.0) ).xy ;', + ' gl_Position = vec4( ( v / projectionVector) + center , 0.0, 1.0);', + ' vTextureCoord = aTextureCoord;', + // ' vec3 color = mod(vec3(aColor.y/65536.0, aColor.y/256.0, aColor.y), 256.0) / 256.0;', + ' vColor = aColor;', + '}' + ]; + + /** + * A local texture counter for multi-texture shaders. + * @property textureCount + * @type Number + */ + this.textureCount = 0; + + this.init(); +}; + +PIXI.PixiFastShader.prototype.constructor = PIXI.PixiFastShader; + +/** +* Initialises the shader. +* +* @method init +*/ +PIXI.PixiFastShader.prototype.init = function() +{ + var gl = this.gl; + + var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc); + + gl.useProgram(program); + + // get and store the uniforms for the shader + this.uSampler = gl.getUniformLocation(program, 'uSampler'); + + this.projectionVector = gl.getUniformLocation(program, 'projectionVector'); + this.offsetVector = gl.getUniformLocation(program, 'offsetVector'); + this.dimensions = gl.getUniformLocation(program, 'dimensions'); + this.uMatrix = gl.getUniformLocation(program, 'uMatrix'); + + // get and store the attributes + this.aVertexPosition = gl.getAttribLocation(program, 'aVertexPosition'); + this.aPositionCoord = gl.getAttribLocation(program, 'aPositionCoord'); + + this.aScale = gl.getAttribLocation(program, 'aScale'); + this.aRotation = gl.getAttribLocation(program, 'aRotation'); + + this.aTextureCoord = gl.getAttribLocation(program, 'aTextureCoord'); + this.colorAttribute = gl.getAttribLocation(program, 'aColor'); + + // Begin worst hack eva // + + // WHY??? ONLY on my chrome pixel the line above returns -1 when using filters? + // maybe its somthing to do with the current state of the gl context. + // Im convinced this is a bug in the chrome browser as there is NO reason why this should be returning -1 especially as it only manifests on my chrome pixel + // If theres any webGL people that know why could happen please help :) + if(this.colorAttribute === -1) + { + this.colorAttribute = 2; + } + + this.attributes = [this.aVertexPosition, this.aPositionCoord, this.aScale, this.aRotation, this.aTextureCoord, this.colorAttribute]; + + // End worst hack eva // + + this.program = program; +}; + +/** +* Destroys the shader. +* +* @method destroy +*/ +PIXI.PixiFastShader.prototype.destroy = function() +{ + this.gl.deleteProgram( this.program ); + this.uniforms = null; + this.gl = null; + + this.attributes = null; +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** +* @class StripShader +* @constructor +* @param gl {WebGLContext} the current WebGL drawing context +*/ +PIXI.StripShader = function(gl) +{ + /** + * @property _UID + * @type Number + * @private + */ + this._UID = PIXI._UID++; + + /** + * @property gl + * @type WebGLContext + */ + this.gl = gl; + + /** + * The WebGL program. + * @property program + * @type Any + */ + this.program = null; + + /** + * The fragment shader. + * @property fragmentSrc + * @type Array + */ + this.fragmentSrc = [ + 'precision mediump float;', + 'varying vec2 vTextureCoord;', + // 'varying float vColor;', + 'uniform float alpha;', + 'uniform sampler2D uSampler;', + + 'void main(void) {', + ' gl_FragColor = texture2D(uSampler, vec2(vTextureCoord.x, vTextureCoord.y)) * alpha;', + // ' gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);',//gl_FragColor * alpha;', + '}' + ]; + + /** + * The vertex shader. + * @property vertexSrc + * @type Array + */ + this.vertexSrc = [ + 'attribute vec2 aVertexPosition;', + 'attribute vec2 aTextureCoord;', + 'uniform mat3 translationMatrix;', + 'uniform vec2 projectionVector;', + 'uniform vec2 offsetVector;', + // 'uniform float alpha;', + // 'uniform vec3 tint;', + 'varying vec2 vTextureCoord;', + // 'varying vec4 vColor;', + + 'void main(void) {', + ' vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);', + ' v -= offsetVector.xyx;', + ' gl_Position = vec4( v.x / projectionVector.x -1.0, v.y / -projectionVector.y + 1.0 , 0.0, 1.0);', + ' vTextureCoord = aTextureCoord;', + // ' vColor = aColor * vec4(tint * alpha, alpha);', + '}' + ]; + + this.init(); +}; + +PIXI.StripShader.prototype.constructor = PIXI.StripShader; + +/** +* Initialises the shader. +* +* @method init +*/ +PIXI.StripShader.prototype.init = function() +{ + var gl = this.gl; + + var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc); + gl.useProgram(program); + + // get and store the uniforms for the shader + this.uSampler = gl.getUniformLocation(program, 'uSampler'); + this.projectionVector = gl.getUniformLocation(program, 'projectionVector'); + this.offsetVector = gl.getUniformLocation(program, 'offsetVector'); + this.colorAttribute = gl.getAttribLocation(program, 'aColor'); + //this.dimensions = gl.getUniformLocation(this.program, 'dimensions'); + + // get and store the attributes + this.aVertexPosition = gl.getAttribLocation(program, 'aVertexPosition'); + this.aTextureCoord = gl.getAttribLocation(program, 'aTextureCoord'); + + this.attributes = [this.aVertexPosition, this.aTextureCoord]; + + this.translationMatrix = gl.getUniformLocation(program, 'translationMatrix'); + this.alpha = gl.getUniformLocation(program, 'alpha'); + + this.program = program; +}; + +/** +* Destroys the shader. +* +* @method destroy +*/ +PIXI.StripShader.prototype.destroy = function() +{ + this.gl.deleteProgram( this.program ); + this.uniforms = null; + this.gl = null; + + this.attribute = null; +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** +* @class PrimitiveShader +* @constructor +* @param gl {WebGLContext} the current WebGL drawing context +*/ +PIXI.PrimitiveShader = function(gl) +{ + /** + * @property _UID + * @type Number + * @private + */ + this._UID = PIXI._UID++; + + /** + * @property gl + * @type WebGLContext + */ + this.gl = gl; + + /** + * The WebGL program. + * @property program + * @type Any + */ + this.program = null; + + /** + * The fragment shader. + * @property fragmentSrc + * @type Array + */ + this.fragmentSrc = [ + 'precision mediump float;', + 'varying vec4 vColor;', + + 'void main(void) {', + ' gl_FragColor = vColor;', + '}' + ]; + + /** + * The vertex shader. + * @property vertexSrc + * @type Array + */ + this.vertexSrc = [ + 'attribute vec2 aVertexPosition;', + 'attribute vec4 aColor;', + 'uniform mat3 translationMatrix;', + 'uniform vec2 projectionVector;', + 'uniform vec2 offsetVector;', + 'uniform float alpha;', + 'uniform float flipY;', + 'uniform vec3 tint;', + 'varying vec4 vColor;', + + 'void main(void) {', + ' vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);', + ' v -= offsetVector.xyx;', + ' gl_Position = vec4( v.x / projectionVector.x -1.0, (v.y / projectionVector.y * -flipY) + flipY , 0.0, 1.0);', + ' vColor = aColor * vec4(tint * alpha, alpha);', + '}' + ]; + + this.init(); +}; + +PIXI.PrimitiveShader.prototype.constructor = PIXI.PrimitiveShader; + +/** +* Initialises the shader. +* +* @method init +*/ +PIXI.PrimitiveShader.prototype.init = function() +{ + var gl = this.gl; + + var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc); + gl.useProgram(program); + + // get and store the uniforms for the shader + this.projectionVector = gl.getUniformLocation(program, 'projectionVector'); + this.offsetVector = gl.getUniformLocation(program, 'offsetVector'); + this.tintColor = gl.getUniformLocation(program, 'tint'); + this.flipY = gl.getUniformLocation(program, 'flipY'); + + // get and store the attributes + this.aVertexPosition = gl.getAttribLocation(program, 'aVertexPosition'); + this.colorAttribute = gl.getAttribLocation(program, 'aColor'); + + this.attributes = [this.aVertexPosition, this.colorAttribute]; + + this.translationMatrix = gl.getUniformLocation(program, 'translationMatrix'); + this.alpha = gl.getUniformLocation(program, 'alpha'); + + this.program = program; +}; + +/** +* Destroys the shader. +* +* @method destroy +*/ +PIXI.PrimitiveShader.prototype.destroy = function() +{ + this.gl.deleteProgram( this.program ); + this.uniforms = null; + this.gl = null; + + this.attributes = null; +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** +* @class ComplexPrimitiveShader +* @constructor +* @param gl {WebGLContext} the current WebGL drawing context +*/ +PIXI.ComplexPrimitiveShader = function(gl) +{ + /** + * @property _UID + * @type Number + * @private + */ + this._UID = PIXI._UID++; + + /** + * @property gl + * @type WebGLContext + */ + this.gl = gl; + + /** + * The WebGL program. + * @property program + * @type Any + */ + this.program = null; + + /** + * The fragment shader. + * @property fragmentSrc + * @type Array + */ + this.fragmentSrc = [ + + 'precision mediump float;', + + 'varying vec4 vColor;', + + 'void main(void) {', + ' gl_FragColor = vColor;', + '}' + ]; + + /** + * The vertex shader. + * @property vertexSrc + * @type Array + */ + this.vertexSrc = [ + 'attribute vec2 aVertexPosition;', + //'attribute vec4 aColor;', + 'uniform mat3 translationMatrix;', + 'uniform vec2 projectionVector;', + 'uniform vec2 offsetVector;', + + 'uniform vec3 tint;', + 'uniform float alpha;', + 'uniform vec3 color;', + 'uniform float flipY;', + 'varying vec4 vColor;', + + 'void main(void) {', + ' vec3 v = translationMatrix * vec3(aVertexPosition , 1.0);', + ' v -= offsetVector.xyx;', + ' gl_Position = vec4( v.x / projectionVector.x -1.0, (v.y / projectionVector.y * -flipY) + flipY , 0.0, 1.0);', + ' vColor = vec4(color * alpha * tint, alpha);',//" * vec4(tint * alpha, alpha);', + '}' + ]; + + this.init(); +}; + +PIXI.ComplexPrimitiveShader.prototype.constructor = PIXI.ComplexPrimitiveShader; + +/** +* Initialises the shader. +* +* @method init +*/ +PIXI.ComplexPrimitiveShader.prototype.init = function() +{ + var gl = this.gl; + + var program = PIXI.compileProgram(gl, this.vertexSrc, this.fragmentSrc); + gl.useProgram(program); + + // get and store the uniforms for the shader + this.projectionVector = gl.getUniformLocation(program, 'projectionVector'); + this.offsetVector = gl.getUniformLocation(program, 'offsetVector'); + this.tintColor = gl.getUniformLocation(program, 'tint'); + this.color = gl.getUniformLocation(program, 'color'); + this.flipY = gl.getUniformLocation(program, 'flipY'); + + // get and store the attributes + this.aVertexPosition = gl.getAttribLocation(program, 'aVertexPosition'); + // this.colorAttribute = gl.getAttribLocation(program, 'aColor'); + + this.attributes = [this.aVertexPosition, this.colorAttribute]; + + this.translationMatrix = gl.getUniformLocation(program, 'translationMatrix'); + this.alpha = gl.getUniformLocation(program, 'alpha'); + + this.program = program; +}; + +/** +* Destroys the shader. +* +* @method destroy +*/ +PIXI.ComplexPrimitiveShader.prototype.destroy = function() +{ + this.gl.deleteProgram( this.program ); + this.uniforms = null; + this.gl = null; + + this.attribute = null; +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +PIXI.glContexts = []; // this is where we store the webGL contexts for easy access. +PIXI.instances = []; + +/** + * The WebGLRenderer draws the stage and all its content onto a webGL enabled canvas. This renderer + * should be used for browsers that support webGL. This Render works by automatically managing webGLBatchs. + * 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 :) + * + * @class WebGLRenderer + * @constructor + * @param game {Phaser.Game} A reference to the Phaser Game instance + */ +PIXI.WebGLRenderer = function(game) { + + /** + * @property {Phaser.Game} game - A reference to the Phaser Game instance. + */ + this.game = game; + + if (!PIXI.defaultRenderer) + { + PIXI.defaultRenderer = this; + } + + /** + * @property type + * @type Number + */ + this.type = PIXI.WEBGL_RENDERER; + + /** + * The resolution of the renderer + * + * @property resolution + * @type Number + * @default 1 + */ + this.resolution = game.resolution; + + /** + * Whether the render view is transparent + * + * @property transparent + * @type Boolean + */ + this.transparent = game.transparent; + + /** + * Whether the render view should be resized automatically + * + * @property autoResize + * @type Boolean + */ + this.autoResize = false; + + /** + * The value of the preserveDrawingBuffer flag affects whether or not the contents of the stencil buffer is retained after rendering. + * + * @property preserveDrawingBuffer + * @type Boolean + */ + this.preserveDrawingBuffer = game.preserveDrawingBuffer; + + /** + * This sets if the WebGLRenderer will clear the context texture or not before the new render pass. If true: + * If the Stage is NOT transparent, Pixi will clear to alpha (0, 0, 0, 0). + * 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. + * + * @property clearBeforeRender + * @type Boolean + * @default + */ + this.clearBeforeRender = game.clearBeforeRender; + + /** + * The width of the canvas view + * + * @property width + * @type Number + */ + this.width = game.width; + + /** + * The height of the canvas view + * + * @property height + * @type Number + */ + this.height = game.height; + + /** + * The canvas element that everything is drawn to + * + * @property view + * @type HTMLCanvasElement + */ + this.view = game.canvas; + + /** + * @property _contextOptions + * @type Object + * @private + */ + this._contextOptions = { + alpha: this.transparent, + antialias: game.antialias, + premultipliedAlpha: this.transparent && this.transparent !== 'notMultiplied', + stencil: true, + preserveDrawingBuffer: this.preserveDrawingBuffer + }; + + /** + * @property projection + * @type Point + */ + this.projection = new PIXI.Point(); + + /** + * @property offset + * @type Point + */ + this.offset = new PIXI.Point(); + + // time to create the render managers! each one focuses on managing a state in webGL + + /** + * Deals with managing the shader programs and their attribs + * @property shaderManager + * @type WebGLShaderManager + */ + this.shaderManager = new PIXI.WebGLShaderManager(); + + /** + * Manages the rendering of sprites + * @property spriteBatch + * @type WebGLSpriteBatch + */ + this.spriteBatch = new PIXI.WebGLSpriteBatch(); + + /** + * Manages the masks using the stencil buffer + * @property maskManager + * @type WebGLMaskManager + */ + this.maskManager = new PIXI.WebGLMaskManager(); + + /** + * Manages the filters + * @property filterManager + * @type WebGLFilterManager + */ + this.filterManager = new PIXI.WebGLFilterManager(); + + /** + * Manages the stencil buffer + * @property stencilManager + * @type WebGLStencilManager + */ + this.stencilManager = new PIXI.WebGLStencilManager(); + + /** + * Manages the blendModes + * @property blendModeManager + * @type WebGLBlendModeManager + */ + this.blendModeManager = new PIXI.WebGLBlendModeManager(); + + /** + * @property renderSession + * @type Object + */ + this.renderSession = {}; + + // Needed? + this.renderSession.game = this.game; + this.renderSession.gl = this.gl; + this.renderSession.drawCount = 0; + this.renderSession.shaderManager = this.shaderManager; + this.renderSession.maskManager = this.maskManager; + this.renderSession.filterManager = this.filterManager; + this.renderSession.blendModeManager = this.blendModeManager; + this.renderSession.spriteBatch = this.spriteBatch; + this.renderSession.stencilManager = this.stencilManager; + this.renderSession.renderer = this; + this.renderSession.resolution = this.resolution; + + // time init the context.. + this.initContext(); + + // map some webGL blend modes.. + this.mapBlendModes(); + +}; + +// constructor +PIXI.WebGLRenderer.prototype.constructor = PIXI.WebGLRenderer; + +/** +* @method initContext +*/ +PIXI.WebGLRenderer.prototype.initContext = function() +{ + var gl = this.view.getContext('webgl', this._contextOptions) || this.view.getContext('experimental-webgl', this._contextOptions); + + this.gl = gl; + + if (!gl) { + // fail, not able to get a context + throw new Error('This browser does not support webGL. Try using the canvas renderer'); + } + + this.glContextId = gl.id = PIXI.WebGLRenderer.glContextId++; + + PIXI.glContexts[this.glContextId] = gl; + + PIXI.instances[this.glContextId] = this; + + // set up the default pixi settings.. + gl.disable(gl.DEPTH_TEST); + gl.disable(gl.CULL_FACE); + gl.enable(gl.BLEND); + + // need to set the context for all the managers... + this.shaderManager.setContext(gl); + this.spriteBatch.setContext(gl); + this.maskManager.setContext(gl); + this.filterManager.setContext(gl); + this.blendModeManager.setContext(gl); + this.stencilManager.setContext(gl); + + this.renderSession.gl = this.gl; + + // now resize and we are good to go! + this.resize(this.width, this.height); +}; + +/** + * Renders the stage to its webGL view + * + * @method render + * @param stage {Stage} the Stage element to be rendered + */ +PIXI.WebGLRenderer.prototype.render = function(stage) +{ + // no point rendering if our context has been blown up! + if (this.contextLost) + { + return; + } + + var gl = this.gl; + + // -- Does this need to be set every frame? -- // + gl.viewport(0, 0, this.width, this.height); + + // make sure we are bound to the main frame buffer + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + + if (this.game.clearBeforeRender) + { + gl.clearColor(stage._bgColor.r, stage._bgColor.g, stage._bgColor.b, stage._bgColor.a); + + gl.clear(gl.COLOR_BUFFER_BIT); + } + + this.offset.x = this.game.camera._shake.x; + this.offset.y = this.game.camera._shake.y; + + this.renderDisplayObject(stage, this.projection); +}; + +/** + * Renders a Display Object. + * + * @method renderDisplayObject + * @param displayObject {DisplayObject} The DisplayObject to render + * @param projection {Point} The projection + * @param buffer {Array} a standard WebGL buffer + */ +PIXI.WebGLRenderer.prototype.renderDisplayObject = function(displayObject, projection, buffer, matrix) +{ + this.renderSession.blendModeManager.setBlendMode(PIXI.blendModes.NORMAL); + + // reset the render session data.. + this.renderSession.drawCount = 0; + + // make sure to flip the Y if using a render texture.. + this.renderSession.flipY = buffer ? -1 : 1; + + // set the default projection + this.renderSession.projection = projection; + + //set the default offset + this.renderSession.offset = this.offset; + + // start the sprite batch + this.spriteBatch.begin(this.renderSession); + + // start the filter manager + this.filterManager.begin(this.renderSession, buffer); + + // render the scene! + displayObject._renderWebGL(this.renderSession, matrix); + + // finish the sprite batch + this.spriteBatch.end(); +}; + +/** + * Resizes the webGL view to the specified width and height. + * + * @method resize + * @param width {Number} the new width of the webGL view + * @param height {Number} the new height of the webGL view + */ +PIXI.WebGLRenderer.prototype.resize = function(width, height) +{ + this.width = width * this.resolution; + this.height = height * this.resolution; + + this.view.width = this.width; + this.view.height = this.height; + + if (this.autoResize) { + this.view.style.width = this.width / this.resolution + 'px'; + this.view.style.height = this.height / this.resolution + 'px'; + } + + this.gl.viewport(0, 0, this.width, this.height); + + this.projection.x = this.width / 2 / this.resolution; + this.projection.y = -this.height / 2 / this.resolution; +}; + +/** + * Updates and Creates a WebGL texture for the renderers context. + * + * @method updateTexture + * @param texture {Texture} the texture to update + * @return {boolean} True if the texture was successfully bound, otherwise false. + */ +PIXI.WebGLRenderer.prototype.updateTexture = function(texture) +{ + if (!texture.hasLoaded) + { + return false; + } + + var gl = this.gl; + + if (!texture._glTextures[gl.id]) + { + texture._glTextures[gl.id] = gl.createTexture(); + } + + gl.bindTexture(gl.TEXTURE_2D, texture._glTextures[gl.id]); + + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultipliedAlpha); + + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.source); + + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, texture.scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR : gl.NEAREST); + + if (texture.mipmap && PIXI.isPowerOfTwo(texture.width, texture.height)) + { + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, texture.scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR_MIPMAP_LINEAR : gl.NEAREST_MIPMAP_NEAREST); + gl.generateMipmap(gl.TEXTURE_2D); + } + else + { + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, texture.scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR : gl.NEAREST); + } + + if (!texture._powerOf2) + { + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + } + else + { + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); + } + + texture._dirty[gl.id] = false; + + // return texture._glTextures[gl.id]; + return true; + +}; + +/** + * Removes everything from the renderer (event listeners, spritebatch, etc...) + * + * @method destroy + */ +PIXI.WebGLRenderer.prototype.destroy = function() +{ + PIXI.glContexts[this.glContextId] = null; + + this.projection = null; + this.offset = null; + + this.shaderManager.destroy(); + this.spriteBatch.destroy(); + this.maskManager.destroy(); + this.filterManager.destroy(); + + this.shaderManager = null; + this.spriteBatch = null; + this.maskManager = null; + this.filterManager = null; + + this.gl = null; + this.renderSession = null; + + PIXI.CanvasPool.remove(this); + + PIXI.instances[this.glContextId] = null; + + PIXI.WebGLRenderer.glContextId--; +}; + +/** + * Maps Pixi blend modes to WebGL blend modes. + * + * @method mapBlendModes + */ +PIXI.WebGLRenderer.prototype.mapBlendModes = function() +{ + var gl = this.gl; + + if (!PIXI.blendModesWebGL) + { + var b = []; + var modes = PIXI.blendModes; + + b[modes.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.ADD] = [gl.SRC_ALPHA, gl.DST_ALPHA]; + b[modes.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.SCREEN] = [gl.SRC_ALPHA, gl.ONE]; + b[modes.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + b[modes.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + + PIXI.blendModesWebGL = b; + } +}; + +PIXI.WebGLRenderer.glContextId = 0; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** +* @class WebGLBlendModeManager +* @constructor +* @param gl {WebGLContext} the current WebGL drawing context +*/ +PIXI.WebGLBlendModeManager = function() +{ + /** + * @property currentBlendMode + * @type Number + */ + this.currentBlendMode = 99999; +}; + +PIXI.WebGLBlendModeManager.prototype.constructor = PIXI.WebGLBlendModeManager; + +/** + * Sets the WebGL Context. + * + * @method setContext + * @param gl {WebGLContext} the current WebGL drawing context + */ +PIXI.WebGLBlendModeManager.prototype.setContext = function(gl) +{ + this.gl = gl; +}; + +/** +* Sets-up the given blendMode from WebGL's point of view. +* +* @method setBlendMode +* @param blendMode {Number} the blendMode, should be a Pixi const, such as PIXI.BlendModes.ADD +*/ +PIXI.WebGLBlendModeManager.prototype.setBlendMode = function(blendMode) +{ + if(this.currentBlendMode === blendMode)return false; + + this.currentBlendMode = blendMode; + + var blendModeWebGL = PIXI.blendModesWebGL[this.currentBlendMode]; + + if (blendModeWebGL) + { + this.gl.blendFunc(blendModeWebGL[0], blendModeWebGL[1]); + } + + return true; +}; + +/** +* Destroys this object. +* +* @method destroy +*/ +PIXI.WebGLBlendModeManager.prototype.destroy = function() +{ + this.gl = null; +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** +* @class WebGLMaskManager +* @constructor +* @private +*/ +PIXI.WebGLMaskManager = function() +{ +}; + +PIXI.WebGLMaskManager.prototype.constructor = PIXI.WebGLMaskManager; + +/** +* Sets the drawing context to the one given in parameter. +* +* @method setContext +* @param gl {WebGLContext} the current WebGL drawing context +*/ +PIXI.WebGLMaskManager.prototype.setContext = function(gl) +{ + this.gl = gl; +}; + +/** +* Applies the Mask and adds it to the current filter stack. +* +* @method pushMask +* @param maskData {Array} +* @param renderSession {Object} +*/ +PIXI.WebGLMaskManager.prototype.pushMask = function(maskData, renderSession) +{ + var gl = renderSession.gl; + + if (maskData.dirty) + { + PIXI.WebGLGraphics.updateGraphics(maskData, gl); + } + + if (maskData._webGL[gl.id] === undefined || maskData._webGL[gl.id].data === undefined || maskData._webGL[gl.id].data.length === 0) + { + return; + } + + renderSession.stencilManager.pushStencil(maskData, maskData._webGL[gl.id].data[0], renderSession); +}; + +/** +* Removes the last filter from the filter stack and doesn't return it. +* +* @method popMask +* @param maskData {Array} +* @param renderSession {Object} an object containing all the useful parameters +*/ +PIXI.WebGLMaskManager.prototype.popMask = function(maskData, renderSession) +{ + var gl = this.gl; + + if (maskData._webGL[gl.id] === undefined || maskData._webGL[gl.id].data === undefined || maskData._webGL[gl.id].data.length === 0) + { + return; + } + + renderSession.stencilManager.popStencil(maskData, maskData._webGL[gl.id].data[0], renderSession); + +}; + +/** +* Destroys the mask stack. +* +* @method destroy +*/ +PIXI.WebGLMaskManager.prototype.destroy = function() +{ + this.gl = null; +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** +* @class WebGLStencilManager +* @constructor +* @private +*/ +PIXI.WebGLStencilManager = function() +{ + this.stencilStack = []; + this.reverse = true; + this.count = 0; +}; + +/** +* Sets the drawing context to the one given in parameter. +* +* @method setContext +* @param gl {WebGLContext} the current WebGL drawing context +*/ +PIXI.WebGLStencilManager.prototype.setContext = function(gl) +{ + this.gl = gl; +}; + +/** +* Applies the Mask and adds it to the current filter stack. +* +* @method pushMask +* @param graphics {Graphics} +* @param webGLData {Array} +* @param renderSession {Object} +*/ +PIXI.WebGLStencilManager.prototype.pushStencil = function(graphics, webGLData, renderSession) +{ + var gl = this.gl; + this.bindGraphics(graphics, webGLData, renderSession); + + if(this.stencilStack.length === 0) + { + gl.enable(gl.STENCIL_TEST); + gl.clear(gl.STENCIL_BUFFER_BIT); + this.reverse = true; + this.count = 0; + } + + this.stencilStack.push(webGLData); + + var level = this.count; + + gl.colorMask(false, false, false, false); + + gl.stencilFunc(gl.ALWAYS,0,0xFF); + gl.stencilOp(gl.KEEP,gl.KEEP,gl.INVERT); + + // draw the triangle strip! + + if(webGLData.mode === 1) + { + gl.drawElements(gl.TRIANGLE_FAN, webGLData.indices.length - 4, gl.UNSIGNED_SHORT, 0 ); + + if(this.reverse) + { + gl.stencilFunc(gl.EQUAL, 0xFF - level, 0xFF); + gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR); + } + else + { + gl.stencilFunc(gl.EQUAL,level, 0xFF); + gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR); + } + + // draw a quad to increment.. + gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 ); + + if(this.reverse) + { + gl.stencilFunc(gl.EQUAL,0xFF-(level+1), 0xFF); + } + else + { + gl.stencilFunc(gl.EQUAL,level+1, 0xFF); + } + + this.reverse = !this.reverse; + } + else + { + if(!this.reverse) + { + gl.stencilFunc(gl.EQUAL, 0xFF - level, 0xFF); + gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR); + } + else + { + gl.stencilFunc(gl.EQUAL,level, 0xFF); + gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR); + } + + gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 ); + + if(!this.reverse) + { + gl.stencilFunc(gl.EQUAL,0xFF-(level+1), 0xFF); + } + else + { + gl.stencilFunc(gl.EQUAL,level+1, 0xFF); + } + } + + gl.colorMask(true, true, true, true); + gl.stencilOp(gl.KEEP,gl.KEEP,gl.KEEP); + + this.count++; +}; + +/** + * TODO this does not belong here! + * + * @method bindGraphics + * @param graphics {Graphics} + * @param webGLData {Array} + * @param renderSession {Object} + */ +PIXI.WebGLStencilManager.prototype.bindGraphics = function(graphics, webGLData, renderSession) +{ + //if(this._currentGraphics === graphics)return; + this._currentGraphics = graphics; + + var gl = this.gl; + + // bind the graphics object.. + var projection = renderSession.projection, + offset = renderSession.offset, + shader;// = renderSession.shaderManager.primitiveShader; + + if(webGLData.mode === 1) + { + shader = renderSession.shaderManager.complexPrimitiveShader; + + renderSession.shaderManager.setShader( shader ); + + gl.uniform1f(shader.flipY, renderSession.flipY); + + gl.uniformMatrix3fv(shader.translationMatrix, false, graphics.worldTransform.toArray(true)); + + gl.uniform2f(shader.projectionVector, projection.x, -projection.y); + gl.uniform2f(shader.offsetVector, -offset.x, -offset.y); + + gl.uniform3fv(shader.tintColor, PIXI.hex2rgb(graphics.tint)); + gl.uniform3fv(shader.color, webGLData.color); + + gl.uniform1f(shader.alpha, graphics.worldAlpha * webGLData.alpha); + + gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer); + + gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 4 * 2, 0); + + + // now do the rest.. + // set the index buffer! + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer); + } + else + { + //renderSession.shaderManager.activatePrimitiveShader(); + shader = renderSession.shaderManager.primitiveShader; + renderSession.shaderManager.setShader( shader ); + + gl.uniformMatrix3fv(shader.translationMatrix, false, graphics.worldTransform.toArray(true)); + + gl.uniform1f(shader.flipY, renderSession.flipY); + gl.uniform2f(shader.projectionVector, projection.x, -projection.y); + gl.uniform2f(shader.offsetVector, -offset.x, -offset.y); + + gl.uniform3fv(shader.tintColor, PIXI.hex2rgb(graphics.tint)); + + gl.uniform1f(shader.alpha, graphics.worldAlpha); + + gl.bindBuffer(gl.ARRAY_BUFFER, webGLData.buffer); + + gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 4 * 6, 0); + gl.vertexAttribPointer(shader.colorAttribute, 4, gl.FLOAT, false,4 * 6, 2 * 4); + + // set the index buffer! + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, webGLData.indexBuffer); + } +}; + +/** + * @method popStencil + * @param graphics {Graphics} + * @param webGLData {Array} + * @param renderSession {Object} + */ +PIXI.WebGLStencilManager.prototype.popStencil = function(graphics, webGLData, renderSession) +{ + var gl = this.gl; + this.stencilStack.pop(); + + this.count--; + + if(this.stencilStack.length === 0) + { + // the stack is empty! + gl.disable(gl.STENCIL_TEST); + + } + else + { + + var level = this.count; + + this.bindGraphics(graphics, webGLData, renderSession); + + gl.colorMask(false, false, false, false); + + if(webGLData.mode === 1) + { + this.reverse = !this.reverse; + + if(this.reverse) + { + gl.stencilFunc(gl.EQUAL, 0xFF - (level+1), 0xFF); + gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR); + } + else + { + gl.stencilFunc(gl.EQUAL,level+1, 0xFF); + gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR); + } + + // draw a quad to increment.. + gl.drawElements(gl.TRIANGLE_FAN, 4, gl.UNSIGNED_SHORT, ( webGLData.indices.length - 4 ) * 2 ); + + gl.stencilFunc(gl.ALWAYS,0,0xFF); + gl.stencilOp(gl.KEEP,gl.KEEP,gl.INVERT); + + // draw the triangle strip! + gl.drawElements(gl.TRIANGLE_FAN, webGLData.indices.length - 4, gl.UNSIGNED_SHORT, 0 ); + + if(!this.reverse) + { + gl.stencilFunc(gl.EQUAL,0xFF-(level), 0xFF); + } + else + { + gl.stencilFunc(gl.EQUAL,level, 0xFF); + } + + } + else + { + // console.log("<<>>") + if(!this.reverse) + { + gl.stencilFunc(gl.EQUAL, 0xFF - (level+1), 0xFF); + gl.stencilOp(gl.KEEP,gl.KEEP,gl.INCR); + } + else + { + gl.stencilFunc(gl.EQUAL,level+1, 0xFF); + gl.stencilOp(gl.KEEP,gl.KEEP,gl.DECR); + } + + gl.drawElements(gl.TRIANGLE_STRIP, webGLData.indices.length, gl.UNSIGNED_SHORT, 0 ); + + if(!this.reverse) + { + gl.stencilFunc(gl.EQUAL,0xFF-(level), 0xFF); + } + else + { + gl.stencilFunc(gl.EQUAL,level, 0xFF); + } + } + + gl.colorMask(true, true, true, true); + gl.stencilOp(gl.KEEP,gl.KEEP,gl.KEEP); + + + } +}; + +/** +* Destroys the mask stack. +* +* @method destroy +*/ +PIXI.WebGLStencilManager.prototype.destroy = function() +{ + this.stencilStack = null; + this.gl = null; +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** +* @class WebGLShaderManager +* @constructor +* @private +*/ +PIXI.WebGLShaderManager = function() +{ + /** + * @property maxAttibs + * @type Number + */ + this.maxAttibs = 10; + + /** + * @property attribState + * @type Array + */ + this.attribState = []; + + /** + * @property tempAttribState + * @type Array + */ + this.tempAttribState = []; + + for (var i = 0; i < this.maxAttibs; i++) + { + this.attribState[i] = false; + } + + /** + * @property stack + * @type Array + */ + this.stack = []; + +}; + +PIXI.WebGLShaderManager.prototype.constructor = PIXI.WebGLShaderManager; + +/** +* Initialises the context and the properties. +* +* @method setContext +* @param gl {WebGLContext} the current WebGL drawing context +*/ +PIXI.WebGLShaderManager.prototype.setContext = function(gl) +{ + this.gl = gl; + + // the next one is used for rendering primitives + this.primitiveShader = new PIXI.PrimitiveShader(gl); + + // the next one is used for rendering triangle strips + this.complexPrimitiveShader = new PIXI.ComplexPrimitiveShader(gl); + + // this shader is used for the default sprite rendering + this.defaultShader = new PIXI.PixiShader(gl); + + // this shader is used for the fast sprite rendering + this.fastShader = new PIXI.PixiFastShader(gl); + + // the next one is used for rendering triangle strips + this.stripShader = new PIXI.StripShader(gl); + + this.setShader(this.defaultShader); +}; + +/** +* Takes the attributes given in parameters. +* +* @method setAttribs +* @param attribs {Array} attribs +*/ +PIXI.WebGLShaderManager.prototype.setAttribs = function(attribs) +{ + // reset temp state + var i; + + for (i = 0; i < this.tempAttribState.length; i++) + { + this.tempAttribState[i] = false; + } + + // set the new attribs + for (i = 0; i < attribs.length; i++) + { + var attribId = attribs[i]; + this.tempAttribState[attribId] = true; + } + + var gl = this.gl; + + for (i = 0; i < this.attribState.length; i++) + { + if(this.attribState[i] !== this.tempAttribState[i]) + { + this.attribState[i] = this.tempAttribState[i]; + + if(this.tempAttribState[i]) + { + gl.enableVertexAttribArray(i); + } + else + { + gl.disableVertexAttribArray(i); + } + } + } +}; + +/** +* Sets the current shader. +* +* @method setShader +* @param shader {Any} +*/ +PIXI.WebGLShaderManager.prototype.setShader = function(shader) +{ + if(this._currentId === shader._UID)return false; + + this._currentId = shader._UID; + + this.currentShader = shader; + + this.gl.useProgram(shader.program); + this.setAttribs(shader.attributes); + + return true; +}; + +/** +* Destroys this object. +* +* @method destroy +*/ +PIXI.WebGLShaderManager.prototype.destroy = function() +{ + this.attribState = null; + + this.tempAttribState = null; + + this.primitiveShader.destroy(); + + this.complexPrimitiveShader.destroy(); + + this.defaultShader.destroy(); + + this.fastShader.destroy(); + + this.stripShader.destroy(); + + this.gl = null; +}; + +/** + * @author Mat Groves + * + * Big thanks to the very clever Matt DesLauriers https://github.com/mattdesl/ + * for creating the original pixi version! + * Also a thanks to https://github.com/bchevalier for tweaking the tint and alpha so that they now share 4 bytes on the vertex buffer + * + * Heavily inspired by LibGDX's WebGLSpriteBatch: + * https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g2d/WebGLSpriteBatch.java + */ + + /** + * + * @class WebGLSpriteBatch + * @private + * @constructor + */ +PIXI.WebGLSpriteBatch = function() +{ + /** + * @property vertSize + * @type Number + */ + this.vertSize = 5; + + /** + * The number of images in the SpriteBatch before it flushes + * @property size + * @type Number + */ + this.size = 2000;//Math.pow(2, 16) / this.vertSize; + + //the total number of bytes in our batch + var numVerts = this.size * 4 * 4 * this.vertSize; + //the total number of indices in our batch + var numIndices = this.size * 6; + + /** + * Holds the vertices + * + * @property vertices + * @type ArrayBuffer + */ + this.vertices = new PIXI.ArrayBuffer(numVerts); + + /** + * View on the vertices as a Float32Array + * + * @property positions + * @type Float32Array + */ + this.positions = new PIXI.Float32Array(this.vertices); + + /** + * View on the vertices as a Uint32Array + * + * @property colors + * @type Uint32Array + */ + this.colors = new PIXI.Uint32Array(this.vertices); + + /** + * Holds the indices + * + * @property indices + * @type Uint16Array + */ + this.indices = new PIXI.Uint16Array(numIndices); + + /** + * @property lastIndexCount + * @type Number + */ + this.lastIndexCount = 0; + + for (var i=0, j=0; i < numIndices; i += 6, j += 4) + { + this.indices[i + 0] = j + 0; + this.indices[i + 1] = j + 1; + this.indices[i + 2] = j + 2; + this.indices[i + 3] = j + 0; + this.indices[i + 4] = j + 2; + this.indices[i + 5] = j + 3; + } + + /** + * @property drawing + * @type Boolean + */ + this.drawing = false; + + /** + * @property currentBatchSize + * @type Number + */ + this.currentBatchSize = 0; + + /** + * @property currentBaseTexture + * @type BaseTexture + */ + this.currentBaseTexture = null; + + /** + * @property dirty + * @type Boolean + */ + this.dirty = true; + + /** + * @property textures + * @type Array + */ + this.textures = []; + + /** + * @property blendModes + * @type Array + */ + this.blendModes = []; + + /** + * @property shaders + * @type Array + */ + this.shaders = []; + + /** + * @property sprites + * @type Array + */ + this.sprites = []; + + /** + * @property defaultShader + * @type AbstractFilter + */ + this.defaultShader = new PIXI.AbstractFilter([ + 'precision lowp float;', + 'varying vec2 vTextureCoord;', + 'varying vec4 vColor;', + 'uniform sampler2D uSampler;', + 'void main(void) {', + ' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;', + '}' + ]); +}; + +/** +* @method setContext +* @param gl {WebGLContext} the current WebGL drawing context +*/ +PIXI.WebGLSpriteBatch.prototype.setContext = function(gl) +{ + this.gl = gl; + + // create a couple of buffers + this.vertexBuffer = gl.createBuffer(); + this.indexBuffer = gl.createBuffer(); + + // 65535 is max index, so 65535 / 6 = 10922. + + //upload the index data + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices, gl.STATIC_DRAW); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); + gl.bufferData(gl.ARRAY_BUFFER, this.vertices, gl.DYNAMIC_DRAW); + + this.currentBlendMode = 99999; + + var shader = new PIXI.PixiShader(gl); + + shader.fragmentSrc = this.defaultShader.fragmentSrc; + shader.uniforms = {}; + shader.init(); + + this.defaultShader.shaders[gl.id] = shader; +}; + +/** +* @method begin +* @param renderSession {Object} The RenderSession object +*/ +PIXI.WebGLSpriteBatch.prototype.begin = function(renderSession) +{ + this.renderSession = renderSession; + this.shader = this.renderSession.shaderManager.defaultShader; + + this.start(); +}; + +/** +* @method end +*/ +PIXI.WebGLSpriteBatch.prototype.end = function() +{ + this.flush(); +}; + +/** +* @method render +* @param 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. +*/ +PIXI.WebGLSpriteBatch.prototype.render = function(sprite, matrix) +{ + var texture = sprite.texture; + + // They provided an alternative rendering matrix, so use it + var wt = sprite.worldTransform; + + if (matrix) + { + wt = matrix; + } + + // check texture.. + if (this.currentBatchSize >= this.size) + { + this.flush(); + this.currentBaseTexture = texture.baseTexture; + } + + // get the uvs for the texture + var uvs = texture._uvs; + + // if the uvs have not updated then no point rendering just yet! + if (!uvs) + { + return; + } + + var aX = sprite.anchor.x; + var aY = sprite.anchor.y; + + var w0, w1, h0, h1; + + if (texture.trim) + { + // if the sprite is trimmed then we need to add the extra space before transforming the sprite coords. + var trim = texture.trim; + + w1 = trim.x - aX * trim.width; + w0 = w1 + texture.crop.width; + + h1 = trim.y - aY * trim.height; + h0 = h1 + texture.crop.height; + } + else + { + w0 = (texture.frame.width) * (1-aX); + w1 = (texture.frame.width) * -aX; + + h0 = texture.frame.height * (1-aY); + h1 = texture.frame.height * -aY; + } + + var i = this.currentBatchSize * 4 * this.vertSize; + var resolution = texture.baseTexture.resolution; + + var a = wt.a / resolution; + var b = wt.b / resolution; + var c = wt.c / resolution; + var d = wt.d / resolution; + var tx = wt.tx; + var ty = wt.ty; + + var colors = this.colors; + var positions = this.positions; + + if (this.renderSession.roundPixels) + { + // xy + positions[i] = a * w1 + c * h1 + tx | 0; + positions[i+1] = d * h1 + b * w1 + ty | 0; + + // xy + positions[i+5] = a * w0 + c * h1 + tx | 0; + positions[i+6] = d * h1 + b * w0 + ty | 0; + + // xy + positions[i+10] = a * w0 + c * h0 + tx | 0; + positions[i+11] = d * h0 + b * w0 + ty | 0; + + // xy + positions[i+15] = a * w1 + c * h0 + tx | 0; + positions[i+16] = d * h0 + b * w1 + ty | 0; + } + else + { + // xy + positions[i] = a * w1 + c * h1 + tx; + positions[i+1] = d * h1 + b * w1 + ty; + + // xy + positions[i+5] = a * w0 + c * h1 + tx; + positions[i+6] = d * h1 + b * w0 + ty; + + // xy + positions[i+10] = a * w0 + c * h0 + tx; + positions[i+11] = d * h0 + b * w0 + ty; + + // xy + positions[i+15] = a * w1 + c * h0 + tx; + positions[i+16] = d * h0 + b * w1 + ty; + } + + // uv + positions[i+2] = uvs.x0; + positions[i+3] = uvs.y0; + + // uv + positions[i+7] = uvs.x1; + positions[i+8] = uvs.y1; + + // uv + positions[i+12] = uvs.x2; + positions[i+13] = uvs.y2; + + // uv + positions[i+17] = uvs.x3; + positions[i+18] = uvs.y3; + + // color and alpha + var tint = sprite.tint; + + colors[i+4] = colors[i+9] = colors[i+14] = colors[i+19] = (tint >> 16) + (tint & 0xff00) + ((tint & 0xff) << 16) + (sprite.worldAlpha * 255 << 24); + + // increment the batchsize + this.sprites[this.currentBatchSize++] = sprite; + +}; + +/** +* Renders a TilingSprite using the spriteBatch. +* +* @method renderTilingSprite +* @param sprite {TilingSprite} the sprite to render +*/ +PIXI.WebGLSpriteBatch.prototype.renderTilingSprite = function(sprite) +{ + var texture = sprite.tilingTexture; + + // check texture.. + if (this.currentBatchSize >= this.size) + { + this.flush(); + this.currentBaseTexture = texture.baseTexture; + } + + // set the textures uvs temporarily + if (!sprite._uvs) + { + sprite._uvs = new PIXI.TextureUvs(); + } + + var uvs = sprite._uvs; + + var w = texture.baseTexture.width; + var h = texture.baseTexture.height; + + // var w = sprite._frame.sourceSizeW; + // var h = sprite._frame.sourceSizeH; + + // w = 16; + // h = 16; + + sprite.tilePosition.x %= w * sprite.tileScaleOffset.x; + sprite.tilePosition.y %= h * sprite.tileScaleOffset.y; + + var offsetX = sprite.tilePosition.x / (w * sprite.tileScaleOffset.x); + var offsetY = sprite.tilePosition.y / (h * sprite.tileScaleOffset.y); + + var scaleX = (sprite.width / w) / (sprite.tileScale.x * sprite.tileScaleOffset.x); + var scaleY = (sprite.height / h) / (sprite.tileScale.y * sprite.tileScaleOffset.y); + + uvs.x0 = 0 - offsetX; + uvs.y0 = 0 - offsetY; + + uvs.x1 = (1 * scaleX) - offsetX; + uvs.y1 = 0 - offsetY; + + uvs.x2 = (1 * scaleX) - offsetX; + uvs.y2 = (1 * scaleY) - offsetY; + + uvs.x3 = 0 - offsetX; + uvs.y3 = (1 * scaleY) - offsetY; + + // Get the sprites current alpha and tint and combine them into a single color + var tint = sprite.tint; + var color = (tint >> 16) + (tint & 0xff00) + ((tint & 0xff) << 16) + (sprite.worldAlpha * 255 << 24); + + var positions = this.positions; + var colors = this.colors; + + var width = sprite.width; + var height = sprite.height; + + // TODO trim?? + var aX = sprite.anchor.x; + var aY = sprite.anchor.y; + var w0 = width * (1-aX); + var w1 = width * -aX; + + var h0 = height * (1-aY); + var h1 = height * -aY; + + var i = this.currentBatchSize * 4 * this.vertSize; + + var resolution = texture.baseTexture.resolution; + + var wt = sprite.worldTransform; + + var a = wt.a / resolution; + var b = wt.b / resolution; + var c = wt.c / resolution; + var d = wt.d / resolution; + var tx = wt.tx; + var ty = wt.ty; + + // xy + positions[i++] = a * w1 + c * h1 + tx; + positions[i++] = d * h1 + b * w1 + ty; + // uv + positions[i++] = uvs.x0; + positions[i++] = uvs.y0; + // color + colors[i++] = color; + + // xy + positions[i++] = (a * w0 + c * h1 + tx); + positions[i++] = d * h1 + b * w0 + ty; + // uv + positions[i++] = uvs.x1; + positions[i++] = uvs.y1; + // color + colors[i++] = color; + + // xy + positions[i++] = a * w0 + c * h0 + tx; + positions[i++] = d * h0 + b * w0 + ty; + // uv + positions[i++] = uvs.x2; + positions[i++] = uvs.y2; + // color + colors[i++] = color; + + // xy + positions[i++] = a * w1 + c * h0 + tx; + positions[i++] = d * h0 + b * w1 + ty; + // uv + positions[i++] = uvs.x3; + positions[i++] = uvs.y3; + // color + colors[i++] = color; + + // increment the batchsize + this.sprites[this.currentBatchSize++] = sprite; +}; + +/** +* Renders the content and empties the current batch. +* +* @method flush +*/ +PIXI.WebGLSpriteBatch.prototype.flush = function() +{ + // If the batch is length 0 then return as there is nothing to draw + if (this.currentBatchSize === 0) + { + return; + } + + var gl = this.gl; + var shader; + + if (this.dirty) + { + this.dirty = false; + + // bind the main texture + gl.activeTexture(gl.TEXTURE0); + + // bind the buffers + gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); + + shader = this.defaultShader.shaders[gl.id]; + + // this is the same for each shader? + var stride = this.vertSize * 4; + gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, stride, 0); + gl.vertexAttribPointer(shader.aTextureCoord, 2, gl.FLOAT, false, stride, 2 * 4); + + // color attributes will be interpreted as unsigned bytes and normalized + gl.vertexAttribPointer(shader.colorAttribute, 4, gl.UNSIGNED_BYTE, true, stride, 4 * 4); + } + + // upload the verts to the buffer + if (this.currentBatchSize > (this.size * 0.5)) + { + gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.vertices); + } + else + { + var view = this.positions.subarray(0, this.currentBatchSize * 4 * this.vertSize); + gl.bufferSubData(gl.ARRAY_BUFFER, 0, view); + } + + var nextTexture, nextBlendMode, nextShader; + var batchSize = 0; + var start = 0; + + var currentBaseTexture = null; + var currentBlendMode = this.renderSession.blendModeManager.currentBlendMode; + var currentShader = null; + + var blendSwap = false; + var shaderSwap = false; + var sprite; + + for (var i = 0, j = this.currentBatchSize; i < j; i++) { + + sprite = this.sprites[i]; + + if (sprite.tilingTexture) + { + nextTexture = sprite.tilingTexture.baseTexture; + } + else + { + nextTexture = sprite.texture.baseTexture; + } + + nextBlendMode = sprite.blendMode; + nextShader = sprite.shader || this.defaultShader; + + blendSwap = currentBlendMode !== nextBlendMode; + shaderSwap = currentShader !== nextShader; // should I use _UIDS??? + + var skip = nextTexture.skipRender; + + if (skip && sprite.children.length > 0) + { + skip = false; + } + + if ((currentBaseTexture !== nextTexture && !skip) || blendSwap || shaderSwap) + { + this.renderBatch(currentBaseTexture, batchSize, start); + + start = i; + batchSize = 0; + currentBaseTexture = nextTexture; + + if (blendSwap) + { + currentBlendMode = nextBlendMode; + this.renderSession.blendModeManager.setBlendMode(currentBlendMode); + } + + if (shaderSwap) + { + currentShader = nextShader; + + shader = currentShader.shaders[gl.id]; + + if (!shader) + { + shader = new PIXI.PixiShader(gl); + + shader.fragmentSrc = currentShader.fragmentSrc; + shader.uniforms = currentShader.uniforms; + shader.init(); + + currentShader.shaders[gl.id] = shader; + } + + // set shader function??? + this.renderSession.shaderManager.setShader(shader); + + if (shader.dirty) + { + shader.syncUniforms(); + } + + // both these only need to be set if they are changing.. + // set the projection + var projection = this.renderSession.projection; + gl.uniform2f(shader.projectionVector, projection.x, projection.y); + + // TODO - this is temporary! + var offsetVector = this.renderSession.offset; + gl.uniform2f(shader.offsetVector, offsetVector.x, offsetVector.y); + + // set the pointers + } + } + + batchSize++; + } + + this.renderBatch(currentBaseTexture, batchSize, start); + + // then reset the batch! + this.currentBatchSize = 0; +}; + +/** +* @method renderBatch +* @param texture {Texture} +* @param size {Number} +* @param startIndex {Number} +*/ +PIXI.WebGLSpriteBatch.prototype.renderBatch = function(texture, size, startIndex) +{ + if (size === 0) + { + return; + } + + var gl = this.gl; + + // check if a texture is dirty.. + if (texture._dirty[gl.id]) + { + if (!this.renderSession.renderer.updateTexture(texture)) + { + // If updateTexture returns false then we cannot render it, so bail out now + return; + } + } + else + { + // bind the current texture + gl.bindTexture(gl.TEXTURE_2D, texture._glTextures[gl.id]); + } + + // now draw those suckas! + gl.drawElements(gl.TRIANGLES, size * 6, gl.UNSIGNED_SHORT, startIndex * 6 * 2); + + // increment the draw count + this.renderSession.drawCount++; +}; + +/** +* @method stop +*/ +PIXI.WebGLSpriteBatch.prototype.stop = function() +{ + this.flush(); + this.dirty = true; +}; + +/** +* @method start +*/ +PIXI.WebGLSpriteBatch.prototype.start = function() +{ + this.dirty = true; +}; + +/** +* Destroys the SpriteBatch. +* +* @method destroy +*/ +PIXI.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; +}; +/** + * @author Mat Groves + * + * Big thanks to the very clever Matt DesLauriers https://github.com/mattdesl/ + * 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 + */ + +/** +* @class WebGLFastSpriteBatch +* @constructor +*/ +PIXI.WebGLFastSpriteBatch = function(gl) +{ + /** + * @property vertSize + * @type Number + */ + this.vertSize = 10; + + /** + * @property maxSize + * @type Number + */ + this.maxSize = 6000;//Math.pow(2, 16) / this.vertSize; + + /** + * @property size + * @type Number + */ + this.size = this.maxSize; + + //the total number of floats in our batch + var numVerts = this.size * 4 * this.vertSize; + + //the total number of indices in our batch + var numIndices = this.maxSize * 6; + + /** + * Vertex data + * @property vertices + * @type Float32Array + */ + this.vertices = new PIXI.Float32Array(numVerts); + + /** + * Index data + * @property indices + * @type Uint16Array + */ + this.indices = new PIXI.Uint16Array(numIndices); + + /** + * @property vertexBuffer + * @type Object + */ + this.vertexBuffer = null; + + /** + * @property indexBuffer + * @type Object + */ + this.indexBuffer = null; + + /** + * @property lastIndexCount + * @type Number + */ + this.lastIndexCount = 0; + + for (var i=0, j=0; i < numIndices; i += 6, j += 4) + { + this.indices[i + 0] = j + 0; + this.indices[i + 1] = j + 1; + this.indices[i + 2] = j + 2; + this.indices[i + 3] = j + 0; + this.indices[i + 4] = j + 2; + this.indices[i + 5] = j + 3; + } + + /** + * @property drawing + * @type Boolean + */ + this.drawing = false; + + /** + * @property currentBatchSize + * @type Number + */ + this.currentBatchSize = 0; + + /** + * @property currentBaseTexture + * @type BaseTexture + */ + this.currentBaseTexture = null; + + /** + * @property currentBlendMode + * @type Number + */ + this.currentBlendMode = 0; + + /** + * @property renderSession + * @type Object + */ + this.renderSession = null; + + /** + * @property shader + * @type Object + */ + this.shader = null; + + /** + * @property matrix + * @type Matrix + */ + this.matrix = null; + + this.setContext(gl); +}; + +PIXI.WebGLFastSpriteBatch.prototype.constructor = PIXI.WebGLFastSpriteBatch; + +/** + * Sets the WebGL Context. + * + * @method setContext + * @param gl {WebGLContext} the current WebGL drawing context + */ +PIXI.WebGLFastSpriteBatch.prototype.setContext = function(gl) +{ + this.gl = gl; + + // create a couple of buffers + this.vertexBuffer = gl.createBuffer(); + this.indexBuffer = gl.createBuffer(); + + // 65535 is max index, so 65535 / 6 = 10922. + + //upload the index data + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this.indices, gl.STATIC_DRAW); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); + gl.bufferData(gl.ARRAY_BUFFER, this.vertices, gl.DYNAMIC_DRAW); +}; + +/** + * @method begin + * @param spriteBatch {WebGLSpriteBatch} + * @param renderSession {Object} + */ +PIXI.WebGLFastSpriteBatch.prototype.begin = function(spriteBatch, renderSession) +{ + this.renderSession = renderSession; + this.shader = this.renderSession.shaderManager.fastShader; + + this.matrix = spriteBatch.worldTransform.toArray(true); + + this.start(); +}; + +/** + * @method end + */ +PIXI.WebGLFastSpriteBatch.prototype.end = function() +{ + this.flush(); +}; + +/** + * @method render + * @param spriteBatch {WebGLSpriteBatch} + */ +PIXI.WebGLFastSpriteBatch.prototype.render = function(spriteBatch) +{ + var children = spriteBatch.children; + var sprite = children[0]; + + // if the uvs have not updated then no point rendering just yet! + + // check texture. + if(!sprite.texture._uvs)return; + + this.currentBaseTexture = sprite.texture.baseTexture; + + // check blend mode + if(sprite.blendMode !== this.renderSession.blendModeManager.currentBlendMode) + { + this.flush(); + this.renderSession.blendModeManager.setBlendMode(sprite.blendMode); + } + + for(var i=0,j= children.length; i= this.size) + { + this.flush(); + } +}; + +/** + * @method flush + */ +PIXI.WebGLFastSpriteBatch.prototype.flush = function() +{ + // If the batch is length 0 then return as there is nothing to draw + if (this.currentBatchSize===0)return; + + var gl = this.gl; + + // bind the current texture + + if(!this.currentBaseTexture._glTextures[gl.id])this.renderSession.renderer.updateTexture(this.currentBaseTexture, gl); + + gl.bindTexture(gl.TEXTURE_2D, this.currentBaseTexture._glTextures[gl.id]); + + // upload the verts to the buffer + + if(this.currentBatchSize > ( this.size * 0.5 ) ) + { + gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.vertices); + } + else + { + var view = this.vertices.subarray(0, this.currentBatchSize * 4 * this.vertSize); + + gl.bufferSubData(gl.ARRAY_BUFFER, 0, view); + } + + // now draw those suckas! + gl.drawElements(gl.TRIANGLES, this.currentBatchSize * 6, gl.UNSIGNED_SHORT, 0); + + // then reset the batch! + this.currentBatchSize = 0; + + // increment the draw count + this.renderSession.drawCount++; +}; + + +/** + * @method stop + */ +PIXI.WebGLFastSpriteBatch.prototype.stop = function() +{ + this.flush(); +}; + +/** + * @method start + */ +PIXI.WebGLFastSpriteBatch.prototype.start = function() +{ + var gl = this.gl; + + // bind the main texture + gl.activeTexture(gl.TEXTURE0); + + // bind the buffers + gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); + + // set the projection + var projection = this.renderSession.projection; + gl.uniform2f(this.shader.projectionVector, projection.x, projection.y); + + // set the matrix + gl.uniformMatrix3fv(this.shader.uMatrix, false, this.matrix); + + // set the pointers + var stride = this.vertSize * 4; + + gl.vertexAttribPointer(this.shader.aVertexPosition, 2, gl.FLOAT, false, stride, 0); + gl.vertexAttribPointer(this.shader.aPositionCoord, 2, gl.FLOAT, false, stride, 2 * 4); + gl.vertexAttribPointer(this.shader.aScale, 2, gl.FLOAT, false, stride, 4 * 4); + gl.vertexAttribPointer(this.shader.aRotation, 1, gl.FLOAT, false, stride, 6 * 4); + gl.vertexAttribPointer(this.shader.aTextureCoord, 2, gl.FLOAT, false, stride, 7 * 4); + gl.vertexAttribPointer(this.shader.colorAttribute, 1, gl.FLOAT, false, stride, 9 * 4); + +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** +* @class WebGLFilterManager +* @constructor +*/ +PIXI.WebGLFilterManager = function() +{ + /** + * @property filterStack + * @type Array + */ + this.filterStack = []; + + /** + * @property offsetX + * @type Number + */ + this.offsetX = 0; + + /** + * @property offsetY + * @type Number + */ + this.offsetY = 0; +}; + +PIXI.WebGLFilterManager.prototype.constructor = PIXI.WebGLFilterManager; + +/** +* Initialises the context and the properties. +* +* @method setContext +* @param gl {WebGLContext} the current WebGL drawing context +*/ +PIXI.WebGLFilterManager.prototype.setContext = function(gl) +{ + this.gl = gl; + this.texturePool = []; + + this.initShaderBuffers(); +}; + +/** +* @method begin +* @param renderSession {RenderSession} +* @param buffer {ArrayBuffer} +*/ +PIXI.WebGLFilterManager.prototype.begin = function(renderSession, buffer) +{ + this.renderSession = renderSession; + this.defaultShader = renderSession.shaderManager.defaultShader; + + var projection = this.renderSession.projection; + this.width = projection.x * 2; + this.height = -projection.y * 2; + this.buffer = buffer; +}; + +/** +* Applies the filter and adds it to the current filter stack. +* +* @method pushFilter +* @param filterBlock {Object} the filter that will be pushed to the current filter stack +*/ +PIXI.WebGLFilterManager.prototype.pushFilter = function(filterBlock) +{ + var gl = this.gl; + + var projection = this.renderSession.projection; + var offset = this.renderSession.offset; + + filterBlock._filterArea = filterBlock.target.filterArea || filterBlock.target.getBounds(); + + // >>> modify by nextht + filterBlock._previous_stencil_mgr = this.renderSession.stencilManager; + this.renderSession.stencilManager = new PIXI.WebGLStencilManager(); + this.renderSession.stencilManager.setContext(gl); + gl.disable(gl.STENCIL_TEST); + // <<< modify by nextht + + // filter program + // OPTIMISATION - the first filter is free if its a simple color change? + this.filterStack.push(filterBlock); + + var filter = filterBlock.filterPasses[0]; + + this.offsetX += filterBlock._filterArea.x; + this.offsetY += filterBlock._filterArea.y; + + var texture = this.texturePool.pop(); + if(!texture) + { + texture = new PIXI.FilterTexture(this.gl, this.width * this.renderSession.resolution, this.height * this.renderSession.resolution); + } + else + { + texture.resize(this.width * this.renderSession.resolution, this.height * this.renderSession.resolution); + } + + gl.bindTexture(gl.TEXTURE_2D, texture.texture); + + var filterArea = filterBlock._filterArea;// filterBlock.target.getBounds();///filterBlock.target.filterArea; + + var padding = filter.padding; + filterArea.x -= padding; + filterArea.y -= padding; + filterArea.width += padding * 2; + filterArea.height += padding * 2; + + // cap filter to screen size.. + if(filterArea.x < 0)filterArea.x = 0; + if(filterArea.width > this.width)filterArea.width = this.width; + if(filterArea.y < 0)filterArea.y = 0; + if(filterArea.height > this.height)filterArea.height = this.height; + + //gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, filterArea.width, filterArea.height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); + gl.bindFramebuffer(gl.FRAMEBUFFER, texture.frameBuffer); + + // set view port + gl.viewport(0, 0, filterArea.width * this.renderSession.resolution, filterArea.height * this.renderSession.resolution); + + projection.x = filterArea.width/2; + projection.y = -filterArea.height/2; + + offset.x = -filterArea.x; + offset.y = -filterArea.y; + + // update projection + // now restore the regular shader.. + // this.renderSession.shaderManager.setShader(this.defaultShader); + //gl.uniform2f(this.defaultShader.projectionVector, filterArea.width/2, -filterArea.height/2); + //gl.uniform2f(this.defaultShader.offsetVector, -filterArea.x, -filterArea.y); + + gl.colorMask(true, true, true, true); + gl.clearColor(0,0,0, 0); + gl.clear(gl.COLOR_BUFFER_BIT); + + filterBlock._glFilterTexture = texture; + +}; + +/** +* Removes the last filter from the filter stack and doesn't return it. +* +* @method popFilter +*/ +PIXI.WebGLFilterManager.prototype.popFilter = function() +{ + var gl = this.gl; + var filterBlock = this.filterStack.pop(); + var filterArea = filterBlock._filterArea; + var texture = filterBlock._glFilterTexture; + var projection = this.renderSession.projection; + var offset = this.renderSession.offset; + + if(filterBlock.filterPasses.length > 1) + { + gl.viewport(0, 0, filterArea.width * this.renderSession.resolution, filterArea.height * this.renderSession.resolution); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); + + this.vertexArray[0] = 0; + this.vertexArray[1] = filterArea.height; + + this.vertexArray[2] = filterArea.width; + this.vertexArray[3] = filterArea.height; + + this.vertexArray[4] = 0; + this.vertexArray[5] = 0; + + this.vertexArray[6] = filterArea.width; + this.vertexArray[7] = 0; + + gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.vertexArray); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.uvBuffer); + // now set the uvs.. + this.uvArray[2] = filterArea.width/this.width; + this.uvArray[5] = filterArea.height/this.height; + this.uvArray[6] = filterArea.width/this.width; + this.uvArray[7] = filterArea.height/this.height; + + gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.uvArray); + + var inputTexture = texture; + var outputTexture = this.texturePool.pop(); + if(!outputTexture)outputTexture = new PIXI.FilterTexture(this.gl, this.width * this.renderSession.resolution, this.height * this.renderSession.resolution); + outputTexture.resize(this.width * this.renderSession.resolution, this.height * this.renderSession.resolution); + + // need to clear this FBO as it may have some left over elements from a previous filter. + gl.bindFramebuffer(gl.FRAMEBUFFER, outputTexture.frameBuffer ); + gl.clear(gl.COLOR_BUFFER_BIT); + + gl.disable(gl.BLEND); + + for (var i = 0; i < filterBlock.filterPasses.length-1; i++) + { + var filterPass = filterBlock.filterPasses[i]; + + gl.bindFramebuffer(gl.FRAMEBUFFER, outputTexture.frameBuffer ); + + // set texture + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_2D, inputTexture.texture); + + // draw texture.. + //filterPass.applyFilterPass(filterArea.width, filterArea.height); + this.applyFilterPass(filterPass, filterArea, filterArea.width, filterArea.height); + + // swap the textures.. + var temp = inputTexture; + inputTexture = outputTexture; + outputTexture = temp; + } + + gl.enable(gl.BLEND); + + texture = inputTexture; + this.texturePool.push(outputTexture); + } + + var filter = filterBlock.filterPasses[filterBlock.filterPasses.length-1]; + + this.offsetX -= filterArea.x; + this.offsetY -= filterArea.y; + + var sizeX = this.width; + var sizeY = this.height; + + var offsetX = 0; + var offsetY = 0; + + var buffer = this.buffer; + + // time to render the filters texture to the previous scene + if(this.filterStack.length === 0) + { + gl.colorMask(true, true, true, true);//this.transparent); + } + else + { + var currentFilter = this.filterStack[this.filterStack.length-1]; + filterArea = currentFilter._filterArea; + + sizeX = filterArea.width; + sizeY = filterArea.height; + + offsetX = filterArea.x; + offsetY = filterArea.y; + + buffer = currentFilter._glFilterTexture.frameBuffer; + } + + // TODO need to remove these global elements.. + projection.x = sizeX/2; + projection.y = -sizeY/2; + + offset.x = offsetX; + offset.y = offsetY; + + filterArea = filterBlock._filterArea; + + var x = filterArea.x-offsetX; + var y = filterArea.y-offsetY; + + // update the buffers.. + // make sure to flip the y! + gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); + + this.vertexArray[0] = x; + this.vertexArray[1] = y + filterArea.height; + + this.vertexArray[2] = x + filterArea.width; + this.vertexArray[3] = y + filterArea.height; + + this.vertexArray[4] = x; + this.vertexArray[5] = y; + + this.vertexArray[6] = x + filterArea.width; + this.vertexArray[7] = y; + + gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.vertexArray); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.uvBuffer); + + this.uvArray[2] = filterArea.width/this.width; + this.uvArray[5] = filterArea.height/this.height; + this.uvArray[6] = filterArea.width/this.width; + this.uvArray[7] = filterArea.height/this.height; + + gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.uvArray); + + gl.viewport(0, 0, sizeX * this.renderSession.resolution, sizeY * this.renderSession.resolution); + + // bind the buffer + gl.bindFramebuffer(gl.FRAMEBUFFER, buffer ); + + // set the blend mode! + //gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA) + + // set texture + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_2D, texture.texture); + + // >>> modify by nextht + if (this.renderSession.stencilManager) { + this.renderSession.stencilManager.destroy(); + } + this.renderSession.stencilManager = filterBlock._previous_stencil_mgr; + filterBlock._previous_stencil_mgr = null; + if (this.renderSession.stencilManager.count > 0) { + gl.enable(gl.STENCIL_TEST); + } + else { + gl.disable(gl.STENCIL_TEST); + } + // <<< modify by nextht + + // apply! + this.applyFilterPass(filter, filterArea, sizeX, sizeY); + + // now restore the regular shader.. should happen automatically now.. + // this.renderSession.shaderManager.setShader(this.defaultShader); + // gl.uniform2f(this.defaultShader.projectionVector, sizeX/2, -sizeY/2); + // gl.uniform2f(this.defaultShader.offsetVector, -offsetX, -offsetY); + + // return the texture to the pool + this.texturePool.push(texture); + filterBlock._glFilterTexture = null; +}; + + +/** +* Applies the filter to the specified area. +* +* @method applyFilterPass +* @param filter {AbstractFilter} the filter that needs to be applied +* @param filterArea {Texture} TODO - might need an update +* @param width {Number} the horizontal range of the filter +* @param height {Number} the vertical range of the filter +*/ +PIXI.WebGLFilterManager.prototype.applyFilterPass = function(filter, filterArea, width, height) +{ + // use program + var gl = this.gl; + var shader = filter.shaders[gl.id]; + + if(!shader) + { + shader = new PIXI.PixiShader(gl); + + shader.fragmentSrc = filter.fragmentSrc; + shader.uniforms = filter.uniforms; + shader.init(); + + filter.shaders[gl.id] = shader; + } + + // set the shader + this.renderSession.shaderManager.setShader(shader); + +// gl.useProgram(shader.program); + + gl.uniform2f(shader.projectionVector, width/2, -height/2); + gl.uniform2f(shader.offsetVector, 0,0); + + if(filter.uniforms.dimensions) + { + filter.uniforms.dimensions.value[0] = this.width;//width; + filter.uniforms.dimensions.value[1] = this.height;//height; + filter.uniforms.dimensions.value[2] = this.vertexArray[0]; + filter.uniforms.dimensions.value[3] = this.vertexArray[5];//filterArea.height; + } + + shader.syncUniforms(); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); + gl.vertexAttribPointer(shader.aVertexPosition, 2, gl.FLOAT, false, 0, 0); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.uvBuffer); + gl.vertexAttribPointer(shader.aTextureCoord, 2, gl.FLOAT, false, 0, 0); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.colorBuffer); + gl.vertexAttribPointer(shader.colorAttribute, 2, gl.FLOAT, false, 0, 0); + + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); + + // draw the filter... + gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); + + this.renderSession.drawCount++; +}; + +/** +* Initialises the shader buffers. +* +* @method initShaderBuffers +*/ +PIXI.WebGLFilterManager.prototype.initShaderBuffers = function() +{ + var gl = this.gl; + + // create some buffers + this.vertexBuffer = gl.createBuffer(); + this.uvBuffer = gl.createBuffer(); + this.colorBuffer = gl.createBuffer(); + this.indexBuffer = gl.createBuffer(); + + // bind and upload the vertexs.. + // keep a reference to the vertexFloatData.. + this.vertexArray = new PIXI.Float32Array([0.0, 0.0, + 1.0, 0.0, + 0.0, 1.0, + 1.0, 1.0]); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer); + gl.bufferData(gl.ARRAY_BUFFER, this.vertexArray, gl.STATIC_DRAW); + + // bind and upload the uv buffer + this.uvArray = new PIXI.Float32Array([0.0, 0.0, + 1.0, 0.0, + 0.0, 1.0, + 1.0, 1.0]); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.uvBuffer); + gl.bufferData(gl.ARRAY_BUFFER, this.uvArray, gl.STATIC_DRAW); + + this.colorArray = new PIXI.Float32Array([1.0, 0xFFFFFF, + 1.0, 0xFFFFFF, + 1.0, 0xFFFFFF, + 1.0, 0xFFFFFF]); + + gl.bindBuffer(gl.ARRAY_BUFFER, this.colorBuffer); + gl.bufferData(gl.ARRAY_BUFFER, this.colorArray, gl.STATIC_DRAW); + + // bind and upload the index + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array([0, 1, 2, 1, 3, 2]), gl.STATIC_DRAW); + +}; + +/** +* Destroys the filter and removes it from the filter stack. +* +* @method destroy +*/ +PIXI.WebGLFilterManager.prototype.destroy = function() +{ + var gl = this.gl; + + this.filterStack = null; + + this.offsetX = 0; + this.offsetY = 0; + + // destroy textures + for (var i = 0; i < this.texturePool.length; i++) { + this.texturePool[i].destroy(); + } + + this.texturePool = null; + + //destroy buffers.. + gl.deleteBuffer(this.vertexBuffer); + gl.deleteBuffer(this.uvBuffer); + gl.deleteBuffer(this.colorBuffer); + gl.deleteBuffer(this.indexBuffer); +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** +* @class FilterTexture +* @constructor +* @param gl {WebGLContext} the current WebGL drawing context +* @param width {Number} the horizontal range of the filter +* @param height {Number} the vertical range of the filter +* @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values +*/ +PIXI.FilterTexture = function(gl, width, height, scaleMode) +{ + /** + * @property gl + * @type WebGLContext + */ + this.gl = gl; + + // next time to create a frame buffer and texture + + /** + * @property frameBuffer + * @type Any + */ + this.frameBuffer = gl.createFramebuffer(); + + /** + * @property texture + * @type Any + */ + this.texture = gl.createTexture(); + + /** + * @property scaleMode + * @type Number + */ + scaleMode = scaleMode || PIXI.scaleModes.DEFAULT; + + gl.bindTexture(gl.TEXTURE_2D, this.texture); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR : gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, scaleMode === PIXI.scaleModes.LINEAR ? gl.LINEAR : gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.bindFramebuffer(gl.FRAMEBUFFER, this.frameBuffer ); + + gl.bindFramebuffer(gl.FRAMEBUFFER, this.frameBuffer ); + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this.texture, 0); + + // required for masking a mask?? + this.renderBuffer = gl.createRenderbuffer(); + gl.bindRenderbuffer(gl.RENDERBUFFER, this.renderBuffer); + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, this.renderBuffer); + + this.resize(width, height); +}; + +PIXI.FilterTexture.prototype.constructor = PIXI.FilterTexture; + +/** +* Clears the filter texture. +* +* @method clear +*/ +PIXI.FilterTexture.prototype.clear = function() +{ + var gl = this.gl; + + gl.clearColor(0,0,0, 0); + gl.clear(gl.COLOR_BUFFER_BIT); +}; + +/** + * Resizes the texture to the specified width and height + * + * @method resize + * @param width {Number} the new width of the texture + * @param height {Number} the new height of the texture + */ +PIXI.FilterTexture.prototype.resize = function(width, height) +{ + if(this.width === width && this.height === height) return; + + this.width = width; + this.height = height; + + var gl = this.gl; + + gl.bindTexture(gl.TEXTURE_2D, this.texture); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width , height , 0, gl.RGBA, gl.UNSIGNED_BYTE, null); + // update the stencil buffer width and height + gl.bindRenderbuffer(gl.RENDERBUFFER, this.renderBuffer); + gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, width , height ); +}; + +/** +* Destroys the filter texture. +* +* @method destroy +*/ +PIXI.FilterTexture.prototype.destroy = function() +{ + var gl = this.gl; + gl.deleteFramebuffer( this.frameBuffer ); + gl.deleteTexture( this.texture ); + + this.frameBuffer = null; + this.texture = null; +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** + * Creates a Canvas element of the given size. + * + * @class CanvasBuffer + * @constructor + * @param width {Number} the width for the newly created canvas + * @param height {Number} the height for the newly created canvas + */ +PIXI.CanvasBuffer = function(width, height) +{ + /** + * The width of the Canvas in pixels. + * + * @property width + * @type Number + */ + this.width = width; + + /** + * The height of the Canvas in pixels. + * + * @property height + * @type Number + */ + this.height = height; + + /** + * The Canvas object that belongs to this CanvasBuffer. + * + * @property canvas + * @type HTMLCanvasElement + */ + this.canvas = PIXI.CanvasPool.create(this, this.width, this.height); + + /** + * A CanvasRenderingContext2D object representing a two-dimensional rendering context. + * + * @property context + * @type CanvasRenderingContext2D + */ + this.context = this.canvas.getContext("2d"); + + this.canvas.width = width; + this.canvas.height = height; +}; + +PIXI.CanvasBuffer.prototype.constructor = PIXI.CanvasBuffer; + +/** + * Clears the canvas that was created by the CanvasBuffer class. + * + * @method clear + * @private + */ +PIXI.CanvasBuffer.prototype.clear = function() +{ + this.context.setTransform(1, 0, 0, 1, 0, 0); + this.context.clearRect(0,0, this.width, this.height); +}; + +/** + * Resizes the canvas to the specified width and height. + * + * @method resize + * @param width {Number} the new width of the canvas + * @param height {Number} the new height of the canvas + */ +PIXI.CanvasBuffer.prototype.resize = function(width, height) +{ + this.width = this.canvas.width = width; + this.height = this.canvas.height = height; +}; + +/** + * Frees the canvas up for use again. + * + * @method destroy + */ +PIXI.CanvasBuffer.prototype.destroy = function() +{ + PIXI.CanvasPool.remove(this); +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** + * A set of functions used to handle masking. + * + * @class CanvasMaskManager + * @constructor + */ +PIXI.CanvasMaskManager = function() +{ +}; + +PIXI.CanvasMaskManager.prototype.constructor = PIXI.CanvasMaskManager; + +/** + * This method adds it to the current stack of masks. + * + * @method pushMask + * @param maskData {Object} the maskData that will be pushed + * @param renderSession {Object} The renderSession whose context will be used for this mask manager. + */ +PIXI.CanvasMaskManager.prototype.pushMask = function(maskData, renderSession) { + + var context = renderSession.context; + + context.save(); + + var cacheAlpha = maskData.alpha; + var transform = maskData.worldTransform; + + var resolution = renderSession.resolution; + + context.setTransform(transform.a * resolution, + transform.b * resolution, + transform.c * resolution, + transform.d * resolution, + transform.tx * resolution, + transform.ty * resolution); + + PIXI.CanvasGraphics.renderGraphicsMask(maskData, context); + + context.clip(); + + maskData.worldAlpha = cacheAlpha; +}; + +/** + * Restores the current drawing context to the state it was before the mask was applied. + * + * @method popMask + * @param renderSession {Object} The renderSession whose context will be used for this mask manager. + */ +PIXI.CanvasMaskManager.prototype.popMask = function(renderSession) +{ + renderSession.context.restore(); +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** + * Utility methods for Sprite/Texture tinting. + * + * @class CanvasTinter + * @static + */ +PIXI.CanvasTinter = function() {}; + +/** + * Basically this method just needs a sprite and a color and tints the sprite with the given color. + * + * @method getTintedTexture + * @static + * @param sprite {Sprite} the sprite to tint + * @param color {Number} the color to use to tint the sprite with + * @return {HTMLCanvasElement} The tinted canvas + */ +PIXI.CanvasTinter.getTintedTexture = function(sprite, color) +{ + var canvas = sprite.tintedTexture || PIXI.CanvasPool.create(this); + + PIXI.CanvasTinter.tintMethod(sprite.texture, color, canvas); + + return canvas; +}; + +/** + * Tint a texture using the "multiply" operation. + * + * @method tintWithMultiply + * @static + * @param texture {Texture} the texture to tint + * @param color {Number} the color to use to tint the sprite with + * @param canvas {HTMLCanvasElement} the current canvas + */ +PIXI.CanvasTinter.tintWithMultiply = function(texture, color, canvas) +{ + var context = canvas.getContext("2d"); + + var crop = texture.crop; + + if (canvas.width !== crop.width || canvas.height !== crop.height) + { + canvas.width = crop.width; + canvas.height = crop.height; + } + + context.clearRect(0, 0, crop.width, crop.height); + + context.fillStyle = "#" + ("00000" + (color | 0).toString(16)).substr(-6); + context.fillRect(0, 0, crop.width, crop.height); + + context.globalCompositeOperation = "multiply"; + context.drawImage(texture.baseTexture.source, crop.x, crop.y, crop.width, crop.height, 0, 0, crop.width, crop.height); + + context.globalCompositeOperation = "destination-atop"; + context.drawImage(texture.baseTexture.source, crop.x, crop.y, crop.width, crop.height, 0, 0, crop.width, crop.height); + +}; + +/** + * Tint a texture pixel per pixel. + * + * @method tintPerPixel + * @static + * @param texture {Texture} the texture to tint + * @param color {Number} the color to use to tint the sprite with + * @param canvas {HTMLCanvasElement} the current canvas + */ +PIXI.CanvasTinter.tintWithPerPixel = function(texture, color, canvas) +{ + var context = canvas.getContext("2d"); + + var crop = texture.crop; + + canvas.width = crop.width; + canvas.height = crop.height; + + context.globalCompositeOperation = "copy"; + + context.drawImage(texture.baseTexture.source, crop.x, crop.y, crop.width, crop.height, 0, 0, crop.width, crop.height); + + var rgbValues = PIXI.hex2rgb(color); + var r = rgbValues[0], g = rgbValues[1], b = rgbValues[2]; + + var pixelData = context.getImageData(0, 0, crop.width, crop.height); + + var pixels = pixelData.data; + + for (var i = 0; i < pixels.length; i += 4) + { + pixels[i + 0] *= r; + pixels[i + 1] *= g; + pixels[i + 2] *= b; + + if (!PIXI.CanvasTinter.canHandleAlpha) + { + var alpha = pixels[i + 3]; + + pixels[i + 0] /= 255 / alpha; + pixels[i + 1] /= 255 / alpha; + pixels[i + 2] /= 255 / alpha; + } + } + + context.putImageData(pixelData, 0, 0); +}; + +/** + * Checks if the browser correctly supports putImageData alpha channels. + * + * @method checkInverseAlpha + * @static + */ +PIXI.CanvasTinter.checkInverseAlpha = function() +{ + var canvas = new PIXI.CanvasBuffer(2, 1); + + canvas.context.fillStyle = "rgba(10, 20, 30, 0.5)"; + + // Draw a single pixel + canvas.context.fillRect(0, 0, 1, 1); + + // Get the color values + var s1 = canvas.context.getImageData(0, 0, 1, 1); + + if (s1 === null) + { + return false; + } + + // Plot them to x2 + canvas.context.putImageData(s1, 1, 0); + + // Get those values + var s2 = canvas.context.getImageData(1, 0, 1, 1); + + // Compare and return + return (s2.data[0] === s1.data[0] && s2.data[1] === s1.data[1] && s2.data[2] === s1.data[2] && s2.data[3] === s1.data[3]); +}; + +/** + * If the browser isn't capable of handling tinting with alpha this will be false. + * This property is only applicable if using tintWithPerPixel. + * + * @property canHandleAlpha + * @type Boolean + * @static + */ +PIXI.CanvasTinter.canHandleAlpha = PIXI.CanvasTinter.checkInverseAlpha(); + +/** + * Whether or not the Canvas BlendModes are supported, consequently the ability to tint using the multiply method. + * + * @property canUseMultiply + * @type Boolean + * @static + */ +PIXI.CanvasTinter.canUseMultiply = PIXI.canUseNewCanvasBlendModes(); + +/** + * The tinting method that will be used. + * + * @method tintMethod + * @static + */ +PIXI.CanvasTinter.tintMethod = PIXI.CanvasTinter.canUseMultiply ? PIXI.CanvasTinter.tintWithMultiply : PIXI.CanvasTinter.tintWithPerPixel; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** + * 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 :) + * + * @class CanvasRenderer + * @constructor + * @param game {Phaser.Game} A reference to the Phaser Game instance + */ +PIXI.CanvasRenderer = function (game) { + + /** + * @property {Phaser.Game} game - A reference to the Phaser Game instance. + */ + this.game = game; + + if (!PIXI.defaultRenderer) + { + PIXI.defaultRenderer = this; + } + + /** + * The renderer type. + * + * @property type + * @type Number + */ + this.type = PIXI.CANVAS_RENDERER; + + /** + * The resolution of the canvas. + * + * @property resolution + * @type Number + */ + this.resolution = game.resolution; + + /** + * This sets if the CanvasRenderer will clear the canvas or not before the new render pass. + * If the Stage is NOT transparent Pixi will use a canvas sized fillRect operation every frame to set the canvas background color. + * 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. + * + * @property clearBeforeRender + * @type Boolean + * @default + */ + this.clearBeforeRender = game.clearBeforeRender; + + /** + * Whether the render view is transparent + * + * @property transparent + * @type Boolean + */ + this.transparent = game.transparent; + + /** + * Whether the render view should be resized automatically + * + * @property autoResize + * @type Boolean + */ + this.autoResize = false; + + /** + * The width of the canvas view + * + * @property width + * @type Number + * @default 800 + */ + this.width = game.width * this.resolution; + + /** + * The height of the canvas view + * + * @property height + * @type Number + * @default 600 + */ + this.height = game.height * this.resolution; + + /** + * The canvas element that everything is drawn to. + * + * @property view + * @type HTMLCanvasElement + */ + this.view = game.canvas; + + /** + * The canvas 2d context that everything is drawn with + * @property context + * @type CanvasRenderingContext2D + */ + this.context = this.view.getContext("2d", { alpha: this.transparent } ); + + /** + * Boolean flag controlling canvas refresh. + * + * @property refresh + * @type Boolean + */ + this.refresh = true; + + /** + * Internal var. + * + * @property count + * @type Number + */ + this.count = 0; + + /** + * Instance of a PIXI.CanvasMaskManager, handles masking when using the canvas renderer + * @property CanvasMaskManager + * @type CanvasMaskManager + */ + this.maskManager = new PIXI.CanvasMaskManager(); + + /** + * The render session is just a bunch of parameter used for rendering + * @property renderSession + * @type Object + */ + this.renderSession = { + context: this.context, + maskManager: this.maskManager, + scaleMode: null, + smoothProperty: Phaser.Canvas.getSmoothingPrefix(this.context), + + /** + * If true Pixi will Math.floor() x/y values when rendering, stopping pixel interpolation. + * Handy for crisp pixel art and speed on legacy devices. + */ + roundPixels: false + }; + + this.mapBlendModes(); + + this.resize(this.width, this.height); + +}; + +// constructor +PIXI.CanvasRenderer.prototype.constructor = PIXI.CanvasRenderer; + +/** + * Renders the Stage to this canvas view + * + * @method render + * @param stage {Stage} the Stage element to be rendered + */ +PIXI.CanvasRenderer.prototype.render = function (stage) { + + this.context.setTransform(1, 0, 0, 1, 0, 0); + + this.context.globalAlpha = 1; + + this.renderSession.currentBlendMode = 0; + this.renderSession.shakeX = this.game.camera._shake.x; + this.renderSession.shakeY = this.game.camera._shake.y; + + this.context.globalCompositeOperation = 'source-over'; + + if (navigator.isCocoonJS && this.view.screencanvas) + { + this.context.fillStyle = "black"; + this.context.clear(); + } + + if (this.clearBeforeRender) + { + if (this.transparent) + { + this.context.clearRect(0, 0, this.width, this.height); + } + else + { + this.context.fillStyle = stage._bgColor.rgba; + this.context.fillRect(0, 0, this.width , this.height); + } + } + + this.renderDisplayObject(stage); + +}; + +/** + * Removes everything from the renderer and optionally removes the Canvas DOM element. + * + * @method destroy + * @param [removeView=true] {boolean} Removes the Canvas element from the DOM. + */ +PIXI.CanvasRenderer.prototype.destroy = function (removeView) { + + if (removeView === undefined) { removeView = true; } + + if (removeView && this.view.parent) + { + this.view.parent.removeChild(this.view); + } + + this.view = null; + this.context = null; + this.maskManager = null; + this.renderSession = null; + +}; + +/** + * Resizes the canvas view to the specified width and height + * + * @method resize + * @param width {Number} the new width of the canvas view + * @param height {Number} the new height of the canvas view + */ +PIXI.CanvasRenderer.prototype.resize = function (width, height) { + + this.width = width * this.resolution; + this.height = height * this.resolution; + + this.view.width = this.width; + this.view.height = this.height; + + if (this.autoResize) + { + this.view.style.width = this.width / this.resolution + "px"; + this.view.style.height = this.height / this.resolution + "px"; + } + + if (this.renderSession.smoothProperty) + { + this.context[this.renderSession.smoothProperty] = (this.renderSession.scaleMode === PIXI.scaleModes.LINEAR); + } + +}; + +/** + * Renders a display object + * + * @method renderDisplayObject + * @param displayObject {DisplayObject} The displayObject to render + * @param context {CanvasRenderingContext2D} the context 2d method of the canvas + * @param [matrix] {Matrix} Optional matrix to apply to the display object before rendering. + * @private + */ +PIXI.CanvasRenderer.prototype.renderDisplayObject = function (displayObject, context, matrix) { + + this.renderSession.context = context || this.context; + this.renderSession.resolution = this.resolution; + displayObject._renderCanvas(this.renderSession, matrix); + +}; + +/** + * Maps Pixi blend modes to canvas blend modes. + * + * @method mapBlendModes + * @private + */ +PIXI.CanvasRenderer.prototype.mapBlendModes = function () { + + if (!PIXI.blendModesCanvas) + { + var b = []; + var modes = PIXI.blendModes; + var useNew = PIXI.canUseNewCanvasBlendModes(); + + b[modes.NORMAL] = 'source-over'; + b[modes.ADD] = 'lighter'; + b[modes.MULTIPLY] = (useNew) ? 'multiply' : 'source-over'; + b[modes.SCREEN] = (useNew) ? 'screen' : 'source-over'; + b[modes.OVERLAY] = (useNew) ? 'overlay' : 'source-over'; + b[modes.DARKEN] = (useNew) ? 'darken' : 'source-over'; + b[modes.LIGHTEN] = (useNew) ? 'lighten' : 'source-over'; + b[modes.COLOR_DODGE] = (useNew) ? 'color-dodge' : 'source-over'; + b[modes.COLOR_BURN] = (useNew) ? 'color-burn' : 'source-over'; + b[modes.HARD_LIGHT] = (useNew) ? 'hard-light' : 'source-over'; + b[modes.SOFT_LIGHT] = (useNew) ? 'soft-light' : 'source-over'; + b[modes.DIFFERENCE] = (useNew) ? 'difference' : 'source-over'; + b[modes.EXCLUSION] = (useNew) ? 'exclusion' : 'source-over'; + b[modes.HUE] = (useNew) ? 'hue' : 'source-over'; + b[modes.SATURATION] = (useNew) ? 'saturation' : 'source-over'; + b[modes.COLOR] = (useNew) ? 'color' : 'source-over'; + b[modes.LUMINOSITY] = (useNew) ? 'luminosity' : 'source-over'; + + PIXI.blendModesCanvas = b; + } + +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** + * A texture stores the information that represents an image. All textures have a base texture. + * + * @class BaseTexture + * @uses EventTarget + * @constructor + * @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) +{ + /** + * The Resolution of the texture. + * + * @property resolution + * @type Number + */ + this.resolution = 1; + + /** + * [read-only] The width of the base texture set when the image has loaded + * + * @property width + * @type Number + * @readOnly + */ + this.width = 100; + + /** + * [read-only] The height of the base texture set when the image has loaded + * + * @property height + * @type Number + * @readOnly + */ + this.height = 100; + + /** + * The scale mode to apply when scaling this texture + * + * @property scaleMode + * @type {Number} + * @default PIXI.scaleModes.LINEAR + */ + this.scaleMode = scaleMode || PIXI.scaleModes.DEFAULT; + + /** + * [read-only] Set to true once the base texture has loaded + * + * @property hasLoaded + * @type Boolean + * @readOnly + */ + this.hasLoaded = false; + + /** + * The image source that is used to create the texture. + * + * @property source + * @type Image + */ + this.source = source; + + /** + * Controls if RGB channels should be pre-multiplied by Alpha (WebGL only) + * + * @property premultipliedAlpha + * @type Boolean + * @default true + */ + this.premultipliedAlpha = true; + + // used for webGL + + /** + * @property _glTextures + * @type Array + * @private + */ + this._glTextures = []; + + /** + * 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 + * + * @property mipmap + * @type {Boolean} + */ + this.mipmap = false; + + /** + * @property _dirty + * @type Array + * @private + */ + this._dirty = [true, true, true, true]; + + if (!source) + { + return; + } + + if ((this.source.complete || this.source.getContext) && this.source.width && this.source.height) + { + this.hasLoaded = true; + this.width = this.source.naturalWidth || this.source.width; + this.height = this.source.naturalHeight || this.source.height; + this.dirty(); + } + + /** + * A BaseTexture can be set to skip the rendering phase in the WebGL Sprite Batch. + * + * 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. + * + * @property skipRender + * @type Boolean + */ + this.skipRender = false; + + /** + * @property _powerOf2 + * @type Boolean + * @private + */ + this._powerOf2 = false; + +}; + +PIXI.BaseTexture.prototype.constructor = PIXI.BaseTexture; + +/** + * Forces this BaseTexture to be set as loaded, with the given width and height. + * Then calls BaseTexture.dirty. + * Important for when you don't want to modify the source object by forcing in `complete` or dimension properties it may not have. + * + * @method 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. + */ +PIXI.BaseTexture.prototype.forceLoaded = function(width, height) +{ + this.hasLoaded = true; + this.width = width; + this.height = height; + this.dirty(); +}; + +/** + * Destroys this base texture + * + * @method destroy + */ +PIXI.BaseTexture.prototype.destroy = function() +{ + if (this.source) + { + PIXI.CanvasPool.removeByCanvas(this.source); + } + + this.source = null; + + this.unloadFromGPU(); +}; + +/** + * Changes the source image of the texture + * + * @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) +{ + console.warn("PIXI.BaseTexture.updateSourceImage is deprecated. Use Phaser.Sprite.loadTexture instead."); +}; + +/** + * Sets all glTextures to be dirty. + * + * @method dirty + */ +PIXI.BaseTexture.prototype.dirty = function() +{ + for (var i = 0; i < this._glTextures.length; i++) + { + this._dirty[i] = true; + } +}; + +/** + * 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 unloadFromGPU + */ +PIXI.BaseTexture.prototype.unloadFromGPU = function() +{ + this.dirty(); + + // delete the webGL textures if any. + for (var i = this._glTextures.length - 1; i >= 0; i--) + { + var glTexture = this._glTextures[i]; + var gl = PIXI.glContexts[i]; + + if(gl && glTexture) + { + gl.deleteTexture(glTexture); + } + + } + + this._glTextures.length = 0; + + this.dirty(); +}; + +/** + * Helper function that creates a base texture from the given canvas element. + * + * @static + * @method fromCanvas + * @param canvas {Canvas} The canvas element source of the texture + * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @return {BaseTexture} + */ +PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) +{ + if (canvas.width === 0) + { + canvas.width = 1; + } + + if (canvas.height === 0) + { + canvas.height = 1; + } + + return new PIXI.BaseTexture(canvas, scaleMode); +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** + * 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. + * Instead `Texture.valid` will be set to `false` (#1556) + * + * @type {boolean} + */ +PIXI.TextureSilentFail = false; + +/** + * 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. + * + * @class Texture + * @uses EventTarget + * @constructor + * @param baseTexture {BaseTexture} The base texture source to create the texture from + * @param frame {Rectangle} The rectangle frame of the texture to show + * @param [crop] {Rectangle} The area of original texture + * @param [trim] {Rectangle} Trimmed texture rectangle + */ +PIXI.Texture = function(baseTexture, frame, crop, trim) +{ + /** + * Does this Texture have any frame data assigned to it? + * + * @property noFrame + * @type Boolean + */ + this.noFrame = false; + + if (!frame) + { + this.noFrame = true; + frame = new PIXI.Rectangle(0,0,1,1); + } + + if (baseTexture instanceof PIXI.Texture) + { + baseTexture = baseTexture.baseTexture; + } + + /** + * The base texture that this texture uses. + * + * @property baseTexture + * @type BaseTexture + */ + this.baseTexture = baseTexture; + + /** + * The frame specifies the region of the base texture that this texture uses + * + * @property frame + * @type Rectangle + */ + this.frame = frame; + + /** + * The texture trim data. + * + * @property trim + * @type Rectangle + */ + this.trim = trim; + + /** + * This will let the renderer know if the texture is valid. If it's not then it cannot be rendered. + * + * @property valid + * @type Boolean + */ + this.valid = false; + + /** + * Is this a tiling texture? As used by the likes of a TilingSprite. + * + * @property isTiling + * @type Boolean + */ + this.isTiling = false; + + /** + * This will let a renderer know that a texture has been updated (used mainly for webGL uv updates) + * + * @property requiresUpdate + * @type Boolean + */ + this.requiresUpdate = false; + + /** + * This will let a renderer know that a tinted parent has updated its texture. + * + * @property requiresReTint + * @type Boolean + */ + this.requiresReTint = false; + + /** + * The WebGL UV data cache. + * + * @property _uvs + * @type Object + * @private + */ + this._uvs = null; + + /** + * The width of the Texture in pixels. + * + * @property width + * @type Number + */ + this.width = 0; + + /** + * The height of the Texture in pixels. + * + * @property height + * @type Number + */ + this.height = 0; + + /** + * 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) + * + * @property crop + * @type Rectangle + */ + this.crop = crop || new PIXI.Rectangle(0, 0, 1, 1); + + if (baseTexture.hasLoaded) + { + if (this.noFrame) frame = new PIXI.Rectangle(0, 0, baseTexture.width, baseTexture.height); + this.setFrame(frame); + } + +}; + +PIXI.Texture.prototype.constructor = PIXI.Texture; + +/** + * Called when the base texture is loaded + * + * @method onBaseTextureLoaded + * @private + */ +PIXI.Texture.prototype.onBaseTextureLoaded = function() +{ + var baseTexture = this.baseTexture; + + if (this.noFrame) + { + this.frame = new PIXI.Rectangle(0, 0, baseTexture.width, baseTexture.height); + } + + this.setFrame(this.frame); +}; + +/** + * Destroys this texture + * + * @method destroy + * @param destroyBase {Boolean} Whether to destroy the base texture as well + */ +PIXI.Texture.prototype.destroy = function(destroyBase) +{ + if (destroyBase) this.baseTexture.destroy(); + + this.valid = false; +}; + +/** + * Specifies the region of the baseTexture that this texture will use. + * + * @method setFrame + * @param frame {Rectangle} The frame of the texture to set it to + */ +PIXI.Texture.prototype.setFrame = function(frame) +{ + this.noFrame = false; + + this.frame = frame; + this.width = frame.width; + this.height = frame.height; + + this.crop.x = frame.x; + this.crop.y = frame.y; + this.crop.width = frame.width; + this.crop.height = frame.height; + + if (!this.trim && (frame.x + frame.width > this.baseTexture.width || frame.y + frame.height > this.baseTexture.height)) + { + if (!PIXI.TextureSilentFail) + { + throw new Error('Texture Error: frame does not fit inside the base Texture dimensions ' + this); + } + + this.valid = false; + return; + } + + this.valid = frame && frame.width && frame.height && this.baseTexture.source && this.baseTexture.hasLoaded; + + if (this.trim) + { + this.width = this.trim.width; + this.height = this.trim.height; + this.frame.width = this.trim.width; + this.frame.height = this.trim.height; + } + + if (this.valid) this._updateUvs(); + +}; + +/** + * Updates the internal WebGL UV cache. + * + * @method _updateUvs + * @private + */ +PIXI.Texture.prototype._updateUvs = function() +{ + if(!this._uvs)this._uvs = new PIXI.TextureUvs(); + + var frame = this.crop; + var tw = this.baseTexture.width; + var th = this.baseTexture.height; + + this._uvs.x0 = frame.x / tw; + this._uvs.y0 = frame.y / th; + + this._uvs.x1 = (frame.x + frame.width) / tw; + this._uvs.y1 = frame.y / th; + + this._uvs.x2 = (frame.x + frame.width) / tw; + this._uvs.y2 = (frame.y + frame.height) / th; + + this._uvs.x3 = frame.x / tw; + this._uvs.y3 = (frame.y + frame.height) / th; +}; + +/** + * Helper function that creates a new a Texture based on the given canvas element. + * + * @static + * @method fromCanvas + * @param canvas {Canvas} The canvas element source of the texture + * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @return {Texture} + */ +PIXI.Texture.fromCanvas = function(canvas, scaleMode) +{ + var baseTexture = PIXI.BaseTexture.fromCanvas(canvas, scaleMode); + + return new PIXI.Texture(baseTexture); +}; + +PIXI.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; +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** + * A RenderTexture is a special texture that allows any Pixi display object to be rendered to it. + * + * __Hint__: All DisplayObjects (i.e. Sprites) that render to a RenderTexture should be preloaded otherwise black rectangles will be drawn instead. + * + * A RenderTexture takes a snapshot of any Display Object given to its render method. The position and rotation of the given Display Objects is ignored. For example: + * + * var renderTexture = new PIXI.RenderTexture(800, 600); + * var sprite = PIXI.Sprite.fromImage("spinObj_01.png"); + * sprite.position.x = 800/2; + * sprite.position.y = 600/2; + * sprite.anchor.x = 0.5; + * sprite.anchor.y = 0.5; + * renderTexture.render(sprite); + * + * The Sprite in this case will be rendered to a position of 0,0. To render this sprite at its actual position a DisplayObjectContainer should be used: + * + * var doc = new PIXI.DisplayObjectContainer(); + * doc.addChild(sprite); + * renderTexture.render(doc); // Renders to center of renderTexture + * + * @class RenderTexture + * @extends Texture + * @constructor + * @param width {Number} The width of the render texture + * @param height {Number} The height of the render texture + * @param renderer {CanvasRenderer|WebGLRenderer} The renderer used for this RenderTexture + * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param resolution {Number} The resolution of the texture being generated + */ +PIXI.RenderTexture = function(width, height, renderer, scaleMode, resolution) +{ + /** + * The with of the render texture + * + * @property width + * @type Number + */ + this.width = width || 100; + + /** + * The height of the render texture + * + * @property height + * @type Number + */ + this.height = height || 100; + + /** + * The Resolution of the texture. + * + * @property resolution + * @type Number + */ + this.resolution = resolution || 1; + + /** + * The framing rectangle of the render texture + * + * @property frame + * @type Rectangle + */ + this.frame = new PIXI.Rectangle(0, 0, this.width * this.resolution, this.height * this.resolution); + + /** + * 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) + * + * @property crop + * @type Rectangle + */ + this.crop = new PIXI.Rectangle(0, 0, this.width * this.resolution, this.height * this.resolution); + + /** + * The base texture object that this texture uses + * + * @property baseTexture + * @type BaseTexture + */ + this.baseTexture = new PIXI.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 = scaleMode || PIXI.scaleModes.DEFAULT; + + this.baseTexture.hasLoaded = true; + + PIXI.Texture.call(this, + this.baseTexture, + new PIXI.Rectangle(0, 0, this.width * this.resolution, this.height * this.resolution) + ); + + /** + * The renderer this RenderTexture uses. A RenderTexture can only belong to one renderer at the moment if its webGL. + * + * @property renderer + * @type CanvasRenderer|WebGLRenderer + */ + this.renderer = renderer || PIXI.defaultRenderer; + + if (this.renderer.type === PIXI.WEBGL_RENDERER) + { + var gl = this.renderer.gl; + this.baseTexture._dirty[gl.id] = false; + + this.textureBuffer = new PIXI.FilterTexture(gl, this.width, this.height, this.baseTexture.scaleMode); + this.baseTexture._glTextures[gl.id] = this.textureBuffer.texture; + + this.render = this.renderWebGL; + this.projection = new PIXI.Point(this.width * 0.5, -this.height * 0.5); + } + else + { + this.render = this.renderCanvas; + this.textureBuffer = new PIXI.CanvasBuffer(this.width * this.resolution, this.height * this.resolution); + this.baseTexture.source = this.textureBuffer.canvas; + } + + /** + * @property valid + * @type Boolean + */ + this.valid = true; + + this.tempMatrix = new Phaser.Matrix(); + + this._updateUvs(); +}; + +PIXI.RenderTexture.prototype = Object.create(PIXI.Texture.prototype); +PIXI.RenderTexture.prototype.constructor = PIXI.RenderTexture; + +/** + * Resizes the RenderTexture. + * + * @method resize + * @param width {Number} The width to resize to. + * @param height {Number} The height to resize to. + * @param updateBase {Boolean} Should the baseTexture.width and height values be resized as well? + */ +PIXI.RenderTexture.prototype.resize = function(width, height, updateBase) +{ + if (width === this.width && height === this.height)return; + + this.valid = (width > 0 && height > 0); + + this.width = width; + this.height = height; + this.frame.width = this.crop.width = width * this.resolution; + this.frame.height = this.crop.height = height * this.resolution; + + if (updateBase) + { + this.baseTexture.width = this.width * this.resolution; + this.baseTexture.height = this.height * this.resolution; + } + + if (this.renderer.type === PIXI.WEBGL_RENDERER) + { + this.projection.x = this.width / 2; + this.projection.y = -this.height / 2; + } + + if(!this.valid)return; + + this.textureBuffer.resize(this.width, this.height); +}; + +/** + * Clears the RenderTexture. + * + * @method clear + */ +PIXI.RenderTexture.prototype.clear = function() +{ + if (!this.valid) + { + return; + } + + if (this.renderer.type === PIXI.WEBGL_RENDERER) + { + this.renderer.gl.bindFramebuffer(this.renderer.gl.FRAMEBUFFER, this.textureBuffer.frameBuffer); + } + + this.textureBuffer.clear(); +}; + +/** + * This function will draw the display object to the texture. + * + * @method renderWebGL + * @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 [clear] {Boolean} If true the texture will be cleared before the displayObject is drawn + * @private + */ +PIXI.RenderTexture.prototype.renderWebGL = function(displayObject, matrix, clear) +{ + if (!this.valid || displayObject.alpha === 0) + { + return; + } + + // Let's create a nice matrix to apply to our display object. + // Frame buffers come in upside down so we need to flip the matrix. + var wt = displayObject.worldTransform; + wt.identity(); + wt.translate(0, this.projection.y * 2); + + if (matrix) + { + wt.append(matrix); + } + + wt.scale(1, -1); + + // Time to update all the children of the displayObject with the new matrix. + for (var i = 0; i < displayObject.children.length; i++) + { + displayObject.children[i].updateTransform(); + } + + // Time for the webGL fun stuff! + var gl = this.renderer.gl; + + gl.viewport(0, 0, this.width * this.resolution, this.height * this.resolution); + + gl.bindFramebuffer(gl.FRAMEBUFFER, this.textureBuffer.frameBuffer ); + + if (clear) + { + this.textureBuffer.clear(); + } + + this.renderer.spriteBatch.dirty = true; + + this.renderer.renderDisplayObject(displayObject, this.projection, this.textureBuffer.frameBuffer, matrix); + + this.renderer.spriteBatch.dirty = true; + +}; + +/** + * This function will draw the display object to the texture. + * + * @method renderCanvas + * @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 [clear] {Boolean} If true the texture will be cleared before the displayObject is drawn + * @private + */ +PIXI.RenderTexture.prototype.renderCanvas = function(displayObject, matrix, clear) +{ + if (!this.valid || displayObject.alpha === 0) + { + return; + } + + // Let's create a nice matrix to apply to our display object. + // Frame buffers come in upside down so we need to flip the matrix. + var wt = displayObject.worldTransform; + wt.identity(); + + if (matrix) + { + wt.append(matrix); + } + + // Time to update all the children of the displayObject with the new matrix (what new matrix? there isn't one!) + for (var i = 0; i < displayObject.children.length; i++) + { + displayObject.children[i].updateTransform(); + } + + if (clear) + { + this.textureBuffer.clear(); + } + + var realResolution = this.renderer.resolution; + + this.renderer.resolution = this.resolution; + + this.renderer.renderDisplayObject(displayObject, this.textureBuffer.context, matrix); + + this.renderer.resolution = realResolution; +}; + +/** + * Will return a HTML Image of the texture + * + * @method getImage + * @return {Image} + */ +PIXI.RenderTexture.prototype.getImage = function() +{ + var image = new Image(); + image.src = this.getBase64(); + return image; +}; + +/** + * Will return a base64 encoded string of this texture. It works by calling RenderTexture.getCanvas and then running toDataURL on that. + * + * @method getBase64 + * @return {String} A base64 encoded string of the texture. + */ +PIXI.RenderTexture.prototype.getBase64 = function() +{ + return this.getCanvas().toDataURL(); +}; + +/** + * Creates a Canvas element, renders this RenderTexture to it and then returns it. + * + * @method getCanvas + * @return {HTMLCanvasElement} A Canvas element with the texture rendered on. + */ +PIXI.RenderTexture.prototype.getCanvas = function() +{ + if (this.renderer.type === PIXI.WEBGL_RENDERER) + { + var gl = this.renderer.gl; + var width = this.textureBuffer.width; + var height = this.textureBuffer.height; + + var webGLPixels = new Uint8Array(4 * width * height); + + gl.bindFramebuffer(gl.FRAMEBUFFER, this.textureBuffer.frameBuffer); + gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, webGLPixels); + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + + var tempCanvas = new PIXI.CanvasBuffer(width, height); + var canvasData = tempCanvas.context.getImageData(0, 0, width, height); + canvasData.data.set(webGLPixels); + + tempCanvas.context.putImageData(canvasData, 0, 0); + + return tempCanvas.canvas; + } + else + { + return this.textureBuffer.canvas; + } +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + +/** + * 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. + * + * @class AbstractFilter + * @constructor + * @param fragmentSrc {Array} The fragment source in an array of strings. + * @param uniforms {Object} An object containing the uniforms for this filter. + */ +PIXI.AbstractFilter = function(fragmentSrc, uniforms) +{ + /** + * An array of passes - some filters contain a few steps this array simply stores the steps in a liniear fashion. + * For example the blur filter has two passes blurX and blurY. + * @property passes + * @type Array + * @private + */ + this.passes = [this]; + + /** + * @property shaders + * @type Array + * @private + */ + this.shaders = []; + + /** + * @property dirty + * @type Boolean + */ + this.dirty = true; + + /** + * @property padding + * @type Number + */ + this.padding = 0; + + /** + * @property uniforms + * @type Object + * @private + */ + this.uniforms = uniforms || {}; + + /** + * @property fragmentSrc + * @type Array + * @private + */ + this.fragmentSrc = fragmentSrc || []; +}; + +PIXI.AbstractFilter.prototype.constructor = PIXI.AbstractFilter; + +/** + * Syncs the uniforms between the class object and the shaders. + * + * @method syncUniforms + */ +PIXI.AbstractFilter.prototype.syncUniforms = function() +{ + for(var i=0,j=this.shaders.length; i 0) { + var paddingX = this.canvasPadding / this.worldTransform.a; + var paddingY = this.canvasPadding / this.worldTransform.d; + var centerX = (x0 + x1 + x2) / 3; + var centerY = (y0 + y1 + y2) / 3; + + var normX = x0 - centerX; + var normY = y0 - centerY; + + var dist = Math.sqrt(normX * normX + normY * normY); + x0 = centerX + (normX / dist) * (dist + paddingX); + y0 = centerY + (normY / dist) * (dist + paddingY); + + // + + normX = x1 - centerX; + normY = y1 - centerY; + + dist = Math.sqrt(normX * normX + normY * normY); + x1 = centerX + (normX / dist) * (dist + paddingX); + y1 = centerY + (normY / dist) * (dist + paddingY); + + normX = x2 - centerX; + normY = y2 - centerY; + + dist = Math.sqrt(normX * normX + normY * normY); + x2 = centerX + (normX / dist) * (dist + paddingX); + y2 = centerY + (normY / dist) * (dist + paddingY); + } + + context.save(); + context.beginPath(); + + + context.moveTo(x0, y0); + context.lineTo(x1, y1); + context.lineTo(x2, y2); + + context.closePath(); + + context.clip(); + + // Compute matrix transform + var delta = (u0 * v1) + (v0 * u2) + (u1 * v2) - (v1 * u2) - (v0 * u1) - (u0 * v2); + var deltaA = (x0 * v1) + (v0 * x2) + (x1 * v2) - (v1 * x2) - (v0 * x1) - (x0 * v2); + var deltaB = (u0 * x1) + (x0 * u2) + (u1 * x2) - (x1 * u2) - (x0 * u1) - (u0 * x2); + var deltaC = (u0 * v1 * x2) + (v0 * x1 * u2) + (x0 * u1 * v2) - (x0 * v1 * u2) - (v0 * u1 * x2) - (u0 * x1 * v2); + var deltaD = (y0 * v1) + (v0 * y2) + (y1 * v2) - (v1 * y2) - (v0 * y1) - (y0 * v2); + var deltaE = (u0 * y1) + (y0 * u2) + (u1 * y2) - (y1 * u2) - (y0 * u1) - (u0 * y2); + var deltaF = (u0 * v1 * y2) + (v0 * y1 * u2) + (y0 * u1 * v2) - (y0 * v1 * u2) - (v0 * u1 * y2) - (u0 * y1 * v2); + + context.transform(deltaA / delta, deltaD / delta, + deltaB / delta, deltaE / delta, + deltaC / delta, deltaF / delta); + + context.drawImage(textureSource, 0, 0); + context.restore(); +}; + + + +/** + * Renders a flat strip + * + * @method renderStripFlat + * @param strip {Strip} The Strip to render + * @private + */ +PIXI.Strip.prototype.renderStripFlat = function(strip) +{ + var context = this.context; + var vertices = strip.vertices; + + var length = vertices.length/2; + this.count++; + + context.beginPath(); + for (var i=1; i < length-2; i++) + { + // draw some triangles! + var index = i*2; + + var x0 = vertices[index], x1 = vertices[index+2], x2 = vertices[index+4]; + var y0 = vertices[index+1], y1 = vertices[index+3], y2 = vertices[index+5]; + + context.moveTo(x0, y0); + context.lineTo(x1, y1); + context.lineTo(x2, y2); + } + + context.fillStyle = '#FF0000'; + context.fill(); + context.closePath(); +}; + +/* +PIXI.Strip.prototype.setTexture = function(texture) +{ + //TODO SET THE TEXTURES + //TODO VISIBILITY + + // stop current texture + this.texture = texture; + this.width = texture.frame.width; + this.height = texture.frame.height; + this.updateFrame = true; +}; +*/ + +/** + * When the texture is updated, this event will fire to update the scale and frame + * + * @method onTextureUpdate + * @param event + * @private + */ + +PIXI.Strip.prototype.onTextureUpdate = function() +{ + this.updateFrame = true; +}; + +/** + * Returns the bounds of the mesh as a rectangle. The bounds calculation takes the worldTransform into account. + * + * @method getBounds + * @param matrix {Matrix} the transformation matrix of the sprite + * @return {Rectangle} the framing rectangle + */ +PIXI.Strip.prototype.getBounds = function(matrix) +{ + var worldTransform = matrix || this.worldTransform; + + var a = worldTransform.a; + var b = worldTransform.b; + var c = worldTransform.c; + var d = worldTransform.d; + var tx = worldTransform.tx; + var ty = worldTransform.ty; + + var maxX = -Infinity; + var maxY = -Infinity; + + var minX = Infinity; + var minY = Infinity; + + var vertices = this.vertices; + for (var i = 0, n = vertices.length; i < n; i += 2) + { + var rawX = vertices[i], rawY = vertices[i + 1]; + var x = (a * rawX) + (c * rawY) + tx; + var y = (d * rawY) + (b * rawX) + ty; + + minX = x < minX ? x : minX; + minY = y < minY ? y : minY; + + maxX = x > maxX ? x : maxX; + maxY = y > maxY ? y : maxY; + } + + if (minX === -Infinity || maxY === Infinity) + { + return PIXI.EmptyRectangle; + } + + var bounds = this._bounds; + + bounds.x = minX; + bounds.width = maxX - minX; + + bounds.y = minY; + bounds.height = maxY - minY; + + // store a reference so that if this function gets called again in the render cycle we do not have to recalculate + this._currentBounds = bounds; + + return bounds; +}; + +/** + * Different drawing buffer modes supported + * + * @property + * @type {{TRIANGLE_STRIP: number, TRIANGLES: number}} + * @static + */ +PIXI.Strip.DrawModes = { + TRIANGLE_STRIP: 0, + TRIANGLES: 1 +}; + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + * @copyright Mat Groves, Rovanion Luckey + */ + +/** + * + * @class Rope + * @constructor + * @extends Strip + * @param {Texture} texture - The texture to use on the rope. + * @param {Array} points - An array of {PIXI.Point}. + * + */ +PIXI.Rope = function(texture, points) +{ + PIXI.Strip.call( this, texture ); + this.points = points; + + this.vertices = new PIXI.Float32Array(points.length * 4); + this.uvs = new PIXI.Float32Array(points.length * 4); + this.colors = new PIXI.Float32Array(points.length * 2); + this.indices = new PIXI.Uint16Array(points.length * 2); + + + this.refresh(); +}; + + +// constructor +PIXI.Rope.prototype = Object.create( PIXI.Strip.prototype ); +PIXI.Rope.prototype.constructor = PIXI.Rope; + +/* + * Refreshes + * + * @method refresh + */ +PIXI.Rope.prototype.refresh = function() +{ + var points = this.points; + if(points.length < 1) return; + + var uvs = this.uvs; + + var lastPoint = points[0]; + var indices = this.indices; + var colors = this.colors; + + this.count-=0.2; + + uvs[0] = 0; + uvs[1] = 0; + uvs[2] = 0; + uvs[3] = 1; + + colors[0] = 1; + colors[1] = 1; + + indices[0] = 0; + indices[1] = 1; + + var total = points.length, + point, index, amount; + + for (var i = 1; i < total; i++) + { + point = points[i]; + index = i * 4; + // time to do some smart drawing! + amount = i / (total-1); + + if(i%2) + { + uvs[index] = amount; + uvs[index+1] = 0; + + uvs[index+2] = amount; + uvs[index+3] = 1; + } + else + { + uvs[index] = amount; + uvs[index+1] = 0; + + uvs[index+2] = amount; + uvs[index+3] = 1; + } + + index = i * 2; + colors[index] = 1; + colors[index+1] = 1; + + index = i * 2; + indices[index] = index; + indices[index + 1] = index + 1; + + lastPoint = point; + } +}; + +/* + * Updates the object transform for rendering + * + * @method updateTransform + * @private + */ +PIXI.Rope.prototype.updateTransform = function() +{ + + var points = this.points; + if(points.length < 1)return; + + var lastPoint = points[0]; + var nextPoint; + var perp = {x:0, y:0}; + + this.count-=0.2; + + var vertices = this.vertices; + var total = points.length, + point, index, ratio, perpLength, num; + + for (var i = 0; i < total; i++) + { + point = points[i]; + index = i * 4; + + if(i < points.length-1) + { + nextPoint = points[i+1]; + } + else + { + nextPoint = point; + } + + perp.y = -(nextPoint.x - lastPoint.x); + perp.x = nextPoint.y - lastPoint.y; + + ratio = (1 - (i / (total-1))) * 10; + + if(ratio > 1) ratio = 1; + + perpLength = Math.sqrt(perp.x * perp.x + perp.y * perp.y); + num = this.texture.height / 2; //(20 + Math.abs(Math.sin((i + this.count) * 0.3) * 50) )* ratio; + perp.x /= perpLength; + perp.y /= perpLength; + + perp.x *= num; + perp.y *= num; + + vertices[index] = point.x + perp.x; + vertices[index+1] = point.y + perp.y; + vertices[index+2] = point.x - perp.x; + vertices[index+3] = point.y - perp.y; + + lastPoint = point; + } + + PIXI.DisplayObjectContainer.prototype.updateTransform.call( this ); +}; +/* + * Sets the texture that the Rope will use + * + * @method setTexture + * @param texture {Texture} the texture that will be used + */ +PIXI.Rope.prototype.setTexture = function(texture) +{ + // stop current texture + this.texture = texture; + //this.updateFrame = true; +}; + +/** + * @author Mat Groves http://matgroves.com/ + */ + +/** + * A tiling sprite is a fast way of rendering a tiling image + * + * @class TilingSprite + * @extends Sprite + * @constructor + * @param texture {Texture} the texture of the tiling sprite + * @param width {Number} the width of the tiling sprite + * @param height {Number} the height of the tiling sprite + */ +PIXI.TilingSprite = function(texture, width, height) +{ + PIXI.Sprite.call(this, texture); + + /** + * The width of the tiling sprite + * + * @property width + * @type Number + */ + this._width = width || 128; + + /** + * The height of the tiling sprite + * + * @property height + * @type Number + */ + this._height = height || 128; + + /** + * The scaling of the image that is being tiled + * + * @property tileScale + * @type Point + */ + this.tileScale = new PIXI.Point(1, 1); + + /** + * A point that represents the scale of the texture object + * + * @property tileScaleOffset + * @type Point + */ + this.tileScaleOffset = new PIXI.Point(1, 1); + + /** + * The offset position of the image that is being tiled + * + * @property tilePosition + * @type Point + */ + this.tilePosition = new PIXI.Point(); + + /** + * Whether this sprite is renderable or not + * + * @property renderable + * @type Boolean + * @default true + */ + this.renderable = true; + + /** + * The tint applied to the sprite. This is a hex value + * + * @property tint + * @type Number + * @default 0xFFFFFF + */ + this.tint = 0xFFFFFF; + + /** + * If enabled a green rectangle will be drawn behind the generated tiling texture, allowing you to visually + * debug the texture being used. + * + * @property textureDebug + * @type Boolean + */ + this.textureDebug = false; + + /** + * The blend mode to be applied to the sprite + * + * @property blendMode + * @type Number + * @default PIXI.blendModes.NORMAL; + */ + this.blendMode = PIXI.blendModes.NORMAL; + + /** + * The CanvasBuffer object that the tiled texture is drawn to. + * + * @property canvasBuffer + * @type PIXI.CanvasBuffer + */ + this.canvasBuffer = null; + + /** + * An internal Texture object that holds the tiling texture that was generated from TilingSprite.texture. + * + * @property tilingTexture + * @type PIXI.Texture + */ + this.tilingTexture = null; + + /** + * The Context fill pattern that is used to draw the TilingSprite in Canvas mode only (will be null in WebGL). + * + * @property tilePattern + * @type PIXI.Texture + */ + this.tilePattern = null; + + /** + * If true the TilingSprite will run generateTexture on its **next** render pass. + * This is set by the likes of Phaser.LoadTexture.setFrame. + * + * @property refreshTexture + * @type Boolean + * @default true + */ + this.refreshTexture = true; + + this.frameWidth = 0; + this.frameHeight = 0; + +}; + +PIXI.TilingSprite.prototype = Object.create(PIXI.Sprite.prototype); +PIXI.TilingSprite.prototype.constructor = PIXI.TilingSprite; + +PIXI.TilingSprite.prototype.setTexture = function(texture) +{ + if (this.texture !== texture) + { + this.texture = texture; + this.refreshTexture = true; + this.cachedTint = 0xFFFFFF; + } + +}; + +/** +* Renders the object using the WebGL renderer +* +* @method _renderWebGL +* @param renderSession {RenderSession} +* @private +*/ +PIXI.TilingSprite.prototype._renderWebGL = function(renderSession) +{ + if (!this.visible || !this.renderable || this.alpha === 0) + { + return; + } + + if (this._mask) + { + renderSession.spriteBatch.stop(); + renderSession.maskManager.pushMask(this.mask, renderSession); + renderSession.spriteBatch.start(); + } + + if (this._filters) + { + renderSession.spriteBatch.flush(); + renderSession.filterManager.pushFilter(this._filterBlock); + } + + if (this.refreshTexture) + { + this.generateTilingTexture(true, renderSession); + + if (this.tilingTexture) + { + if (this.tilingTexture.needsUpdate) + { + renderSession.renderer.updateTexture(this.tilingTexture.baseTexture); + this.tilingTexture.needsUpdate = false; + } + } + else + { + return; + } + } + + renderSession.spriteBatch.renderTilingSprite(this); + + for (var i = 0; i < this.children.length; i++) + { + this.children[i]._renderWebGL(renderSession); + } + + renderSession.spriteBatch.stop(); + + if (this._filters) + { + renderSession.filterManager.popFilter(); + } + + if (this._mask) + { + renderSession.maskManager.popMask(this._mask, renderSession); + } + + renderSession.spriteBatch.start(); + +}; + +/** +* Renders the object using the Canvas renderer +* +* @method _renderCanvas +* @param renderSession {RenderSession} +* @private +*/ +PIXI.TilingSprite.prototype._renderCanvas = function(renderSession) +{ + if (!this.visible || !this.renderable || this.alpha === 0) + { + return; + } + + var context = renderSession.context; + + if (this._mask) + { + renderSession.maskManager.pushMask(this._mask, renderSession); + } + + context.globalAlpha = this.worldAlpha; + + var wt = this.worldTransform; + var resolution = renderSession.resolution; + var tx = (wt.tx * resolution) + renderSession.shakeX; + var ty = (wt.ty * resolution) + renderSession.shakeY; + + context.setTransform(wt.a * resolution, wt.b * resolution, wt.c * resolution, wt.d * resolution, tx, ty); + + if (this.refreshTexture) + { + this.generateTilingTexture(false, renderSession); + + if (this.tilingTexture) + { + this.tilePattern = context.createPattern(this.tilingTexture.baseTexture.source, 'repeat'); + } + else + { + return; + } + } + + var sessionBlendMode = renderSession.currentBlendMode; + + // Check blend mode + if (this.blendMode !== renderSession.currentBlendMode) + { + renderSession.currentBlendMode = this.blendMode; + context.globalCompositeOperation = PIXI.blendModesCanvas[renderSession.currentBlendMode]; + } + + var tilePosition = this.tilePosition; + var tileScale = this.tileScale; + + tilePosition.x %= this.tilingTexture.baseTexture.width; + tilePosition.y %= this.tilingTexture.baseTexture.height; + + // Translate + context.scale(tileScale.x, tileScale.y); + context.translate(tilePosition.x + (this.anchor.x * -this._width), tilePosition.y + (this.anchor.y * -this._height)); + + context.fillStyle = this.tilePattern; + + var tx = -tilePosition.x; + var ty = -tilePosition.y; + var tw = this._width / tileScale.x; + var th = this._height / tileScale.y; + + // Allow for pixel rounding + if (renderSession.roundPixels) + { + tx |= 0; + ty |= 0; + tw |= 0; + th |= 0; + } + + context.fillRect(tx, ty, tw, th); + + // Translate back again + context.scale(1 / tileScale.x, 1 / tileScale.y); + context.translate(-tilePosition.x + (this.anchor.x * this._width), -tilePosition.y + (this.anchor.y * this._height)); + + if (this._mask) + { + renderSession.maskManager.popMask(renderSession); + } + + for (var i = 0; i < this.children.length; i++) + { + this.children[i]._renderCanvas(renderSession); + } + + // Reset blend mode + if (sessionBlendMode !== this.blendMode) + { + renderSession.currentBlendMode = sessionBlendMode; + context.globalCompositeOperation = PIXI.blendModesCanvas[sessionBlendMode]; + } + +}; + +/** + * When the texture is updated, this event will fire to update the scale and frame + * + * @method onTextureUpdate + * @param event + * @private + */ +PIXI.TilingSprite.prototype.onTextureUpdate = function() +{ + // overriding the sprite version of this! +}; + +/** +* +* @method generateTilingTexture +* +* @param forcePowerOfTwo {Boolean} Whether we want to force the texture to be a power of two +* @param renderSession {RenderSession} +*/ +PIXI.TilingSprite.prototype.generateTilingTexture = function(forcePowerOfTwo, renderSession) +{ + if (!this.texture.baseTexture.hasLoaded) + { + return; + } + + var texture = this.texture; + var frame = texture.frame; + + var targetWidth = this._frame.sourceSizeW || this._frame.width; + var targetHeight = this._frame.sourceSizeH || this._frame.height; + + var dx = 0; + var dy = 0; + + if (this._frame.trimmed) + { + dx = this._frame.spriteSourceSizeX; + dy = this._frame.spriteSourceSizeY; + } + + if (forcePowerOfTwo) + { + targetWidth = PIXI.getNextPowerOfTwo(targetWidth); + targetHeight = PIXI.getNextPowerOfTwo(targetHeight); + } + + if (this.canvasBuffer) + { + this.canvasBuffer.resize(targetWidth, targetHeight); + this.tilingTexture.baseTexture.width = targetWidth; + this.tilingTexture.baseTexture.height = targetHeight; + this.tilingTexture.needsUpdate = true; + } + else + { + this.canvasBuffer = new PIXI.CanvasBuffer(targetWidth, targetHeight); + this.tilingTexture = PIXI.Texture.fromCanvas(this.canvasBuffer.canvas); + this.tilingTexture.isTiling = true; + this.tilingTexture.needsUpdate = true; + } + + if (this.textureDebug) + { + this.canvasBuffer.context.strokeStyle = '#00ff00'; + this.canvasBuffer.context.strokeRect(0, 0, targetWidth, targetHeight); + } + + // If a sprite sheet we need this: + var w = texture.crop.width; + var h = texture.crop.height; + + if (w !== targetWidth || h !== targetHeight) + { + w = targetWidth; + h = targetHeight; + } + + this.canvasBuffer.context.drawImage(texture.baseTexture.source, + texture.crop.x, + texture.crop.y, + texture.crop.width, + texture.crop.height, + dx, + dy, + w, + h); + + this.tileScaleOffset.x = frame.width / targetWidth; + this.tileScaleOffset.y = frame.height / targetHeight; + + this.refreshTexture = false; + + this.tilingTexture.baseTexture._powerOf2 = true; + +}; + +/** +* Returns the framing rectangle of the sprite as a PIXI.Rectangle object +* +* @method getBounds +* @return {Rectangle} the framing rectangle +*/ +PIXI.TilingSprite.prototype.getBounds = function() +{ + var width = this._width; + var height = this._height; + + var w0 = width * (1-this.anchor.x); + var w1 = width * -this.anchor.x; + + var h0 = height * (1-this.anchor.y); + var h1 = height * -this.anchor.y; + + var worldTransform = this.worldTransform; + + var a = worldTransform.a; + var b = worldTransform.b; + var c = worldTransform.c; + var d = worldTransform.d; + var tx = worldTransform.tx; + var ty = worldTransform.ty; + + var x1 = a * w1 + c * h1 + tx; + var y1 = d * h1 + b * w1 + ty; + + var x2 = a * w0 + c * h1 + tx; + var y2 = d * h1 + b * w0 + ty; + + var x3 = a * w0 + c * h0 + tx; + var y3 = d * h0 + b * w0 + ty; + + var x4 = a * w1 + c * h0 + tx; + var y4 = d * h0 + b * w1 + ty; + + var maxX = -Infinity; + var maxY = -Infinity; + + var minX = Infinity; + var minY = Infinity; + + minX = x1 < minX ? x1 : minX; + minX = x2 < minX ? x2 : minX; + minX = x3 < minX ? x3 : minX; + minX = x4 < minX ? x4 : minX; + + minY = y1 < minY ? y1 : minY; + minY = y2 < minY ? y2 : minY; + minY = y3 < minY ? y3 : minY; + minY = y4 < minY ? y4 : minY; + + maxX = x1 > maxX ? x1 : maxX; + maxX = x2 > maxX ? x2 : maxX; + maxX = x3 > maxX ? x3 : maxX; + maxX = x4 > maxX ? x4 : maxX; + + maxY = y1 > maxY ? y1 : maxY; + maxY = y2 > maxY ? y2 : maxY; + maxY = y3 > maxY ? y3 : maxY; + maxY = y4 > maxY ? y4 : maxY; + + var bounds = this._bounds; + + bounds.x = minX; + bounds.width = maxX - minX; + + bounds.y = minY; + bounds.height = maxY - minY; + + // store a reference so that if this function gets called again in the render cycle we do not have to recalculate + this._currentBounds = bounds; + + return bounds; +}; + +PIXI.TilingSprite.prototype.destroy = function () { + + PIXI.Sprite.prototype.destroy.call(this); + + if (this.canvasBuffer) + { + this.canvasBuffer.destroy(); + this.canvasBuffer = null; + } + + this.tileScale = null; + this.tileScaleOffset = null; + this.tilePosition = null; + + if (this.tilingTexture) + { + this.tilingTexture.destroy(true); + this.tilingTexture = null; + } + +}; + +/** + * The width of the sprite, setting this will actually modify the scale to achieve the value set + * + * @property width + * @type Number + */ +Object.defineProperty(PIXI.TilingSprite.prototype, 'width', { + + get: function() { + return this._width; + }, + + set: function(value) { + this._width = value; + } + +}); + +/** + * The height of the TilingSprite, setting this will actually modify the scale to achieve the value set + * + * @property height + * @type Number + */ +Object.defineProperty(PIXI.TilingSprite.prototype, 'height', { + + get: function() { + return this._height; + }, + + set: function(value) { + this._height = value; + } + +}); + +/** + * @author Mat Groves http://matgroves.com/ @Doormat23 + */ + + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = PIXI; + } + exports.PIXI = PIXI; + } else if (typeof define !== 'undefined' && define.amd) { + define('PIXI', (function() { return root.PIXI = PIXI; })() ); + } else { + root.PIXI = PIXI; + } + + return PIXI; +}).call(this); \ No newline at end of file diff --git a/build/pixi.map b/build/pixi.map new file mode 100644 index 000000000..cd78f61b8 --- /dev/null +++ b/build/pixi.map @@ -0,0 +1 @@ +{"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 new file mode 100644 index 000000000..0f8021f93 --- /dev/null +++ b/build/pixi.min.js @@ -0,0 +1,6 @@ +/* Phaser v2.6.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.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 160f15178..52903d370 100644 --- a/docs/PIXI.AbstractFilter.html +++ b/docs/PIXI.AbstractFilter.html @@ -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 Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.BaseTexture.html b/docs/PIXI.BaseTexture.html index d3431d514..092a3a01d 100644 --- a/docs/PIXI.BaseTexture.html +++ b/docs/PIXI.BaseTexture.html @@ -2593,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 Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.CanvasBuffer.html b/docs/PIXI.CanvasBuffer.html index e9c08ac23..6c4387b4d 100644 --- a/docs/PIXI.CanvasBuffer.html +++ b/docs/PIXI.CanvasBuffer.html @@ -1862,7 +1862,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.CanvasGraphics.html b/docs/PIXI.CanvasGraphics.html index dcf9d23d8..5b5444683 100644 --- a/docs/PIXI.CanvasGraphics.html +++ b/docs/PIXI.CanvasGraphics.html @@ -1346,7 +1346,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.CanvasMaskManager.html b/docs/PIXI.CanvasMaskManager.html index 18bfa0026..3d4626d4c 100644 --- a/docs/PIXI.CanvasMaskManager.html +++ b/docs/PIXI.CanvasMaskManager.html @@ -1611,7 +1611,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.CanvasPool.html b/docs/PIXI.CanvasPool.html index 748d84db2..cae500a48 100644 --- a/docs/PIXI.CanvasPool.html +++ b/docs/PIXI.CanvasPool.html @@ -2093,7 +2093,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.CanvasRenderer.html b/docs/PIXI.CanvasRenderer.html index 760956455..66c83abf7 100644 --- a/docs/PIXI.CanvasRenderer.html +++ b/docs/PIXI.CanvasRenderer.html @@ -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 Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.CanvasTinter.html b/docs/PIXI.CanvasTinter.html index 241652d51..55f56c413 100644 --- a/docs/PIXI.CanvasTinter.html +++ b/docs/PIXI.CanvasTinter.html @@ -2099,7 +2099,7 @@ This property is only applicable if using tintWithPerPixel.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.ComplexPrimitiveShader.html b/docs/PIXI.ComplexPrimitiveShader.html index 2fce84ac0..6f7c31b3d 100644 --- a/docs/PIXI.ComplexPrimitiveShader.html +++ b/docs/PIXI.ComplexPrimitiveShader.html @@ -1759,7 +1759,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.DisplayObjectContainer.html b/docs/PIXI.DisplayObjectContainer.html index 391d55cd7..fc5611c73 100644 --- a/docs/PIXI.DisplayObjectContainer.html +++ b/docs/PIXI.DisplayObjectContainer.html @@ -3249,7 +3249,7 @@ It is the base class of all display objects that act as a container for other ob Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.EarCut.html b/docs/PIXI.EarCut.html index e418cf8df..423c736a5 100644 --- a/docs/PIXI.EarCut.html +++ b/docs/PIXI.EarCut.html @@ -1342,7 +1342,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.Event.html b/docs/PIXI.Event.html index 50063c688..2e8d49f7d 100644 --- a/docs/PIXI.Event.html +++ b/docs/PIXI.Event.html @@ -1819,7 +1819,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.EventTarget.html b/docs/PIXI.EventTarget.html index be9349748..6ec8e24b3 100644 --- a/docs/PIXI.EventTarget.html +++ b/docs/PIXI.EventTarget.html @@ -2292,7 +2292,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.FilterTexture.html b/docs/PIXI.FilterTexture.html index 31572eb36..726e632c8 100644 --- a/docs/PIXI.FilterTexture.html +++ b/docs/PIXI.FilterTexture.html @@ -1958,7 +1958,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.Graphics.html b/docs/PIXI.Graphics.html index f65bea12b..5914b9e74 100644 --- a/docs/PIXI.Graphics.html +++ b/docs/PIXI.Graphics.html @@ -6797,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 Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.GraphicsData.html b/docs/PIXI.GraphicsData.html index c9ea97b8d..3d359b546 100644 --- a/docs/PIXI.GraphicsData.html +++ b/docs/PIXI.GraphicsData.html @@ -1346,7 +1346,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.PIXI.DisplayObject.html b/docs/PIXI.PIXI.DisplayObject.html index 5cd8153c4..670d35849 100644 --- a/docs/PIXI.PIXI.DisplayObject.html +++ b/docs/PIXI.PIXI.DisplayObject.html @@ -2668,7 +2668,7 @@ If you need the world position of the DisplayObject, use DisplayObject.wor Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.PIXI.html b/docs/PIXI.PIXI.html index 79e63dea4..2c9985bf6 100644 --- a/docs/PIXI.PIXI.html +++ b/docs/PIXI.PIXI.html @@ -2501,7 +2501,7 @@ this function is taken from Starling Framework as its pretty neat ;)

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.PixiFastShader.html b/docs/PIXI.PixiFastShader.html index 9bf8c0aa3..c60806bfb 100644 --- a/docs/PIXI.PixiFastShader.html +++ b/docs/PIXI.PixiFastShader.html @@ -1815,7 +1815,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.PixiShader.html b/docs/PIXI.PixiShader.html index 23a592570..3d9f008c1 100644 --- a/docs/PIXI.PixiShader.html +++ b/docs/PIXI.PixiShader.html @@ -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 Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.PolyK.html b/docs/PIXI.PolyK.html index 5f8c152d4..f646c31ff 100644 --- a/docs/PIXI.PolyK.html +++ b/docs/PIXI.PolyK.html @@ -1422,7 +1422,7 @@ Slightly modified by Mat Groves (matgroves.com);

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.PrimitiveShader.html b/docs/PIXI.PrimitiveShader.html index 6e33a7df5..2c351461a 100644 --- a/docs/PIXI.PrimitiveShader.html +++ b/docs/PIXI.PrimitiveShader.html @@ -1759,7 +1759,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.RenderTexture.html b/docs/PIXI.RenderTexture.html index 8191f576b..accc80b8e 100644 --- a/docs/PIXI.RenderTexture.html +++ b/docs/PIXI.RenderTexture.html @@ -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 Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.Rope.html b/docs/PIXI.Rope.html index 25bb2f8b9..85822e04e 100644 --- a/docs/PIXI.Rope.html +++ b/docs/PIXI.Rope.html @@ -3701,7 +3701,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.Sprite.html b/docs/PIXI.Sprite.html index 738140d63..d76761ff8 100644 --- a/docs/PIXI.Sprite.html +++ b/docs/PIXI.Sprite.html @@ -4013,7 +4013,7 @@ texture this Sprite was using.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:46 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.SpriteBatch.html b/docs/PIXI.SpriteBatch.html index a64c9a09e..97de9c60f 100644 --- a/docs/PIXI.SpriteBatch.html +++ b/docs/PIXI.SpriteBatch.html @@ -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 Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.Strip.html b/docs/PIXI.Strip.html index 01adde49e..63723807b 100644 --- a/docs/PIXI.Strip.html +++ b/docs/PIXI.Strip.html @@ -3695,7 +3695,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.StripShader.html b/docs/PIXI.StripShader.html index a4dd768f2..300b17619 100644 --- a/docs/PIXI.StripShader.html +++ b/docs/PIXI.StripShader.html @@ -1759,7 +1759,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.Texture.html b/docs/PIXI.Texture.html index 8b2e62c45..22bf35af7 100644 --- a/docs/PIXI.Texture.html +++ b/docs/PIXI.Texture.html @@ -2528,7 +2528,7 @@ irrespective of the actual frame size or placement (which can be influenced by t Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.TilingSprite.html b/docs/PIXI.TilingSprite.html index b6b085488..c459f9506 100644 --- a/docs/PIXI.TilingSprite.html +++ b/docs/PIXI.TilingSprite.html @@ -4790,7 +4790,7 @@ texture this Sprite was using.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.WebGLBlendModeManager.html b/docs/PIXI.WebGLBlendModeManager.html index 33c97624d..e666c2423 100644 --- a/docs/PIXI.WebGLBlendModeManager.html +++ b/docs/PIXI.WebGLBlendModeManager.html @@ -1759,7 +1759,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.WebGLFastSpriteBatch.html b/docs/PIXI.WebGLFastSpriteBatch.html index 31dfc3390..2afc2d45b 100644 --- a/docs/PIXI.WebGLFastSpriteBatch.html +++ b/docs/PIXI.WebGLFastSpriteBatch.html @@ -2889,7 +2889,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.WebGLFilterManager.html b/docs/PIXI.WebGLFilterManager.html index cbf54d9fa..fe454dc52 100644 --- a/docs/PIXI.WebGLFilterManager.html +++ b/docs/PIXI.WebGLFilterManager.html @@ -2280,7 +2280,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:09 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.WebGLRenderer.html b/docs/PIXI.WebGLRenderer.html index e3ed6571b..1601fe831 100644 --- a/docs/PIXI.WebGLRenderer.html +++ b/docs/PIXI.WebGLRenderer.html @@ -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 Jul 08 2016 15:42:47 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:10 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/PIXI.html b/docs/PIXI.html index cbff988c3..ac53c5b33 100644 --- a/docs/PIXI.html +++ b/docs/PIXI.html @@ -1642,7 +1642,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Animation.html b/docs/Phaser.Animation.html index 8ea4e12b0..8873c3c5e 100644 --- a/docs/Phaser.Animation.html +++ b/docs/Phaser.Animation.html @@ -4736,7 +4736,7 @@ If dispatchComplete is true it will dispatch the complete events, o Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.AnimationManager.html b/docs/Phaser.AnimationManager.html index 2ee904765..e808c98d6 100644 --- a/docs/Phaser.AnimationManager.html +++ b/docs/Phaser.AnimationManager.html @@ -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 Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.AnimationParser.html b/docs/Phaser.AnimationParser.html index a76872fda..46d02dd0a 100644 --- a/docs/Phaser.AnimationParser.html +++ b/docs/Phaser.AnimationParser.html @@ -2378,7 +2378,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.ArraySet.html b/docs/Phaser.ArraySet.html index 6bbf97914..d05cff2af 100644 --- a/docs/Phaser.ArraySet.html +++ b/docs/Phaser.ArraySet.html @@ -2951,7 +2951,7 @@ Returns null if not found.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.ArrayUtils.html b/docs/Phaser.ArrayUtils.html index c01b9c8c2..20f3516c0 100644 --- a/docs/Phaser.ArrayUtils.html +++ b/docs/Phaser.ArrayUtils.html @@ -3175,7 +3175,7 @@ for forward compatibility make sure to pass in actual numbers.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.AudioSprite.html b/docs/Phaser.AudioSprite.html index 8aef8ba14..973cb6872 100644 --- a/docs/Phaser.AudioSprite.html +++ b/docs/Phaser.AudioSprite.html @@ -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 Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.BitmapData.html b/docs/Phaser.BitmapData.html index 0e318927c..434c3876e 100644 --- a/docs/Phaser.BitmapData.html +++ b/docs/Phaser.BitmapData.html @@ -16102,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 Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.BitmapText.html b/docs/Phaser.BitmapText.html index a3a7a657f..bff1232f3 100644 --- a/docs/Phaser.BitmapText.html +++ b/docs/Phaser.BitmapText.html @@ -9032,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 Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Bullet.html b/docs/Phaser.Bullet.html index 6c5cd7ee5..9dd7a5191 100644 --- a/docs/Phaser.Bullet.html +++ b/docs/Phaser.Bullet.html @@ -11441,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 Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Button.html b/docs/Phaser.Button.html index 5f2ee1994..fa96bbbf8 100644 --- a/docs/Phaser.Button.html +++ b/docs/Phaser.Button.html @@ -13215,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 Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Cache.html b/docs/Phaser.Cache.html index a56e55496..3d3e4dbc5 100644 --- a/docs/Phaser.Cache.html +++ b/docs/Phaser.Cache.html @@ -15888,7 +15888,7 @@ then it will persist in memory.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Camera.html b/docs/Phaser.Camera.html index 5283fb74a..0854212a0 100644 --- a/docs/Phaser.Camera.html +++ b/docs/Phaser.Camera.html @@ -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 Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Canvas.html b/docs/Phaser.Canvas.html index 42ed6aa59..a3d357511 100644 --- a/docs/Phaser.Canvas.html +++ b/docs/Phaser.Canvas.html @@ -3576,7 +3576,7 @@ patchy on earlier browsers, especially on mobile.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Circle.html b/docs/Phaser.Circle.html index e7c0c7126..98aa65d29 100644 --- a/docs/Phaser.Circle.html +++ b/docs/Phaser.Circle.html @@ -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 Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Color.html b/docs/Phaser.Color.html index 241cf850e..0082bf81b 100644 --- a/docs/Phaser.Color.html +++ b/docs/Phaser.Color.html @@ -12226,7 +12226,7 @@ endian-independent method, use fromRGBA(rgba) and toRGBA(r, g, b, a).

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Angle.html b/docs/Phaser.Component.Angle.html index d2ac81939..1ae6580bc 100644 --- a/docs/Phaser.Component.Angle.html +++ b/docs/Phaser.Component.Angle.html @@ -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 Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Animation.html b/docs/Phaser.Component.Animation.html index acbe8e0ec..77e7c4583 100644 --- a/docs/Phaser.Component.Animation.html +++ b/docs/Phaser.Component.Animation.html @@ -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 Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.AutoCull.html b/docs/Phaser.Component.AutoCull.html index 1199f1903..c94141675 100644 --- a/docs/Phaser.Component.AutoCull.html +++ b/docs/Phaser.Component.AutoCull.html @@ -1468,7 +1468,7 @@ Returns true if they do, otherwise false if fully outs Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Bounds.html b/docs/Phaser.Component.Bounds.html index 401aa4cc0..ce1b51b88 100644 --- a/docs/Phaser.Component.Bounds.html +++ b/docs/Phaser.Component.Bounds.html @@ -2437,7 +2437,7 @@ one expands it.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.BringToTop.html b/docs/Phaser.Component.BringToTop.html index c5a657a97..d73b8a318 100644 --- a/docs/Phaser.Component.BringToTop.html +++ b/docs/Phaser.Component.BringToTop.html @@ -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 Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Core.html b/docs/Phaser.Component.Core.html index fd77a401d..4d5f19b33 100644 --- a/docs/Phaser.Component.Core.html +++ b/docs/Phaser.Component.Core.html @@ -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 Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Crop.html b/docs/Phaser.Component.Crop.html index 50fc65be6..0f926a9ff 100644 --- a/docs/Phaser.Component.Crop.html +++ b/docs/Phaser.Component.Crop.html @@ -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 Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Delta.html b/docs/Phaser.Component.Delta.html index 571c20d1a..6d8bddcfa 100644 --- a/docs/Phaser.Component.Delta.html +++ b/docs/Phaser.Component.Delta.html @@ -1520,7 +1520,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Destroy.html b/docs/Phaser.Component.Destroy.html index f934ac65d..993da03f5 100644 --- a/docs/Phaser.Component.Destroy.html +++ b/docs/Phaser.Component.Destroy.html @@ -1593,7 +1593,7 @@ more than one Game Object sharing the same BaseTexture.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:59 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.FixedToCamera.html b/docs/Phaser.Component.FixedToCamera.html index cf4f8b320..3386c8715 100644 --- a/docs/Phaser.Component.FixedToCamera.html +++ b/docs/Phaser.Component.FixedToCamera.html @@ -1546,7 +1546,7 @@ Called automatically by the Game Object.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Health.html b/docs/Phaser.Component.Health.html index 32e87fd4a..1c9486a1a 100644 --- a/docs/Phaser.Component.Health.html +++ b/docs/Phaser.Component.Health.html @@ -1642,7 +1642,7 @@ Will never exceed the maxHealth value.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:36 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.InCamera.html b/docs/Phaser.Component.InCamera.html index 8056de036..7b8c0a70b 100644 --- a/docs/Phaser.Component.InCamera.html +++ b/docs/Phaser.Component.InCamera.html @@ -1408,7 +1408,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.InWorld.html b/docs/Phaser.Component.InWorld.html index aa82f0e0f..77b3a412c 100644 --- a/docs/Phaser.Component.InWorld.html +++ b/docs/Phaser.Component.InWorld.html @@ -1658,7 +1658,7 @@ Called automatically by the Game Object.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.InputEnabled.html b/docs/Phaser.Component.InputEnabled.html index f346f34ab..57ae2b7f3 100644 --- a/docs/Phaser.Component.InputEnabled.html +++ b/docs/Phaser.Component.InputEnabled.html @@ -1484,7 +1484,7 @@ You can then toggle this back on as needed.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.LifeSpan.html b/docs/Phaser.Component.LifeSpan.html index 2a6f8186b..8f379e870 100644 --- a/docs/Phaser.Component.LifeSpan.html +++ b/docs/Phaser.Component.LifeSpan.html @@ -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 Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.LoadTexture.html b/docs/Phaser.Component.LoadTexture.html index 7c6817f4f..72a0dc634 100644 --- a/docs/Phaser.Component.LoadTexture.html +++ b/docs/Phaser.Component.LoadTexture.html @@ -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 Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Overlap.html b/docs/Phaser.Component.Overlap.html index 6bf6f7222..cfee1356d 100644 --- a/docs/Phaser.Component.Overlap.html +++ b/docs/Phaser.Component.Overlap.html @@ -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 Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.PhysicsBody.html b/docs/Phaser.Component.PhysicsBody.html index aa5c05268..b05eaa5b7 100644 --- a/docs/Phaser.Component.PhysicsBody.html +++ b/docs/Phaser.Component.PhysicsBody.html @@ -1692,7 +1692,7 @@ Called automatically by the Game Object.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Reset.html b/docs/Phaser.Component.Reset.html index 0db5c3aeb..9b5654d0a 100644 --- a/docs/Phaser.Component.Reset.html +++ b/docs/Phaser.Component.Reset.html @@ -1583,7 +1583,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.ScaleMinMax.html b/docs/Phaser.Component.ScaleMinMax.html index c92e34b48..14b9a26ea 100644 --- a/docs/Phaser.Component.ScaleMinMax.html +++ b/docs/Phaser.Component.ScaleMinMax.html @@ -1792,7 +1792,7 @@ or pass null for the maxX and maxY parame Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Component.Smoothed.html b/docs/Phaser.Component.Smoothed.html index ba74124bb..ad919eb26 100644 --- a/docs/Phaser.Component.Smoothed.html +++ b/docs/Phaser.Component.Smoothed.html @@ -1408,7 +1408,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Create.html b/docs/Phaser.Create.html index 4697f0dda..fd034cb78 100644 --- a/docs/Phaser.Create.html +++ b/docs/Phaser.Create.html @@ -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 Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Creature.html b/docs/Phaser.Creature.html index 6512e13d4..49a2101c7 100644 --- a/docs/Phaser.Creature.html +++ b/docs/Phaser.Creature.html @@ -7576,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 Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.DOM.html b/docs/Phaser.DOM.html index e542da213..33ad79e34 100644 --- a/docs/Phaser.DOM.html +++ b/docs/Phaser.DOM.html @@ -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 Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Device.html b/docs/Phaser.Device.html index 78275975f..3f1e2f543 100644 --- a/docs/Phaser.Device.html +++ b/docs/Phaser.Device.html @@ -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 Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.DeviceButton.html b/docs/Phaser.DeviceButton.html index cc910e2c5..25eeeaa24 100644 --- a/docs/Phaser.DeviceButton.html +++ b/docs/Phaser.DeviceButton.html @@ -3351,7 +3351,7 @@ Handles the button up state.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Back.html b/docs/Phaser.Easing.Back.html index 789851d51..e2b261d8f 100644 --- a/docs/Phaser.Easing.Back.html +++ b/docs/Phaser.Easing.Back.html @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Bounce.html b/docs/Phaser.Easing.Bounce.html index 1a95ffc4d..936701e23 100644 --- a/docs/Phaser.Easing.Bounce.html +++ b/docs/Phaser.Easing.Bounce.html @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Circular.html b/docs/Phaser.Easing.Circular.html index d6c5f68d4..19469aa7a 100644 --- a/docs/Phaser.Easing.Circular.html +++ b/docs/Phaser.Easing.Circular.html @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Cubic.html b/docs/Phaser.Easing.Cubic.html index 8552bb53d..c9b606846 100644 --- a/docs/Phaser.Easing.Cubic.html +++ b/docs/Phaser.Easing.Cubic.html @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Elastic.html b/docs/Phaser.Easing.Elastic.html index ab29e9b95..2588b6b37 100644 --- a/docs/Phaser.Easing.Elastic.html +++ b/docs/Phaser.Easing.Elastic.html @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Exponential.html b/docs/Phaser.Easing.Exponential.html index 5ebfe30d2..bbcece1ca 100644 --- a/docs/Phaser.Easing.Exponential.html +++ b/docs/Phaser.Easing.Exponential.html @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Linear.html b/docs/Phaser.Easing.Linear.html index a4ef6cfc2..d04ff6766 100644 --- a/docs/Phaser.Easing.Linear.html +++ b/docs/Phaser.Easing.Linear.html @@ -1489,7 +1489,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Quadratic.html b/docs/Phaser.Easing.Quadratic.html index c10f80e58..30d0fc6fb 100644 --- a/docs/Phaser.Easing.Quadratic.html +++ b/docs/Phaser.Easing.Quadratic.html @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Quartic.html b/docs/Phaser.Easing.Quartic.html index e593bafe0..3ddf5349c 100644 --- a/docs/Phaser.Easing.Quartic.html +++ b/docs/Phaser.Easing.Quartic.html @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Quintic.html b/docs/Phaser.Easing.Quintic.html index c5f8f9539..83a809f4e 100644 --- a/docs/Phaser.Easing.Quintic.html +++ b/docs/Phaser.Easing.Quintic.html @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.Sinusoidal.html b/docs/Phaser.Easing.Sinusoidal.html index 8a78d889e..7c9773c5a 100644 --- a/docs/Phaser.Easing.Sinusoidal.html +++ b/docs/Phaser.Easing.Sinusoidal.html @@ -1767,7 +1767,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Easing.html b/docs/Phaser.Easing.html index 50867efa3..cc40d1c1e 100644 --- a/docs/Phaser.Easing.html +++ b/docs/Phaser.Easing.html @@ -1440,7 +1440,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:37 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:00 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Ellipse.html b/docs/Phaser.Ellipse.html index 85bc5111f..45c6fb564 100644 --- a/docs/Phaser.Ellipse.html +++ b/docs/Phaser.Ellipse.html @@ -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 Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Events.html b/docs/Phaser.Events.html index da5ec8e43..36404688e 100644 --- a/docs/Phaser.Events.html +++ b/docs/Phaser.Events.html @@ -2634,7 +2634,7 @@ It is sent one argument: Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Filter.html b/docs/Phaser.Filter.html index 8a2b979a1..dc2b1fddc 100644 --- a/docs/Phaser.Filter.html +++ b/docs/Phaser.Filter.html @@ -2741,7 +2741,7 @@ values.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.FlexGrid.html b/docs/Phaser.FlexGrid.html index 6f453ac19..e2c36ab69 100644 --- a/docs/Phaser.FlexGrid.html +++ b/docs/Phaser.FlexGrid.html @@ -3052,7 +3052,7 @@ to provide for game object positioning in a responsive manner.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.FlexLayer.html b/docs/Phaser.FlexLayer.html index 99bafb9a8..019d424c0 100644 --- a/docs/Phaser.FlexLayer.html +++ b/docs/Phaser.FlexLayer.html @@ -20753,7 +20753,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Frame.html b/docs/Phaser.Frame.html index ce13a667d..36cf36a56 100644 --- a/docs/Phaser.Frame.html +++ b/docs/Phaser.Frame.html @@ -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 Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.FrameData.html b/docs/Phaser.FrameData.html index 5e016d20e..f0b1ff036 100644 --- a/docs/Phaser.FrameData.html +++ b/docs/Phaser.FrameData.html @@ -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 Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Game.html b/docs/Phaser.Game.html index 81eea4fd8..70ae5d3f0 100644 --- a/docs/Phaser.Game.html +++ b/docs/Phaser.Game.html @@ -6236,7 +6236,7 @@ Phaser will only render when this boolean is false.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.GameObjectCreator.html b/docs/Phaser.GameObjectCreator.html index 86e5bf4d7..eae2d3309 100644 --- a/docs/Phaser.GameObjectCreator.html +++ b/docs/Phaser.GameObjectCreator.html @@ -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 Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.GameObjectFactory.html b/docs/Phaser.GameObjectFactory.html index b285e5dfd..c10f6eebb 100644 --- a/docs/Phaser.GameObjectFactory.html +++ b/docs/Phaser.GameObjectFactory.html @@ -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 Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Gamepad.html b/docs/Phaser.Gamepad.html index d657e9e13..1168913f0 100644 --- a/docs/Phaser.Gamepad.html +++ b/docs/Phaser.Gamepad.html @@ -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 Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Graphics.html b/docs/Phaser.Graphics.html index 458bf8f1f..69750e2f6 100644 --- a/docs/Phaser.Graphics.html +++ b/docs/Phaser.Graphics.html @@ -11392,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 Jul 08 2016 15:42:38 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:01 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Group.html b/docs/Phaser.Group.html index 55fb1817d..6098c587c 100644 --- a/docs/Phaser.Group.html +++ b/docs/Phaser.Group.html @@ -19821,7 +19821,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:02 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Image.html b/docs/Phaser.Image.html index 7c7699922..bf4dcd4f4 100644 --- a/docs/Phaser.Image.html +++ b/docs/Phaser.Image.html @@ -9990,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 Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:02 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.ImageCollection.html b/docs/Phaser.ImageCollection.html index ad1d4dceb..b902e1add 100644 --- a/docs/Phaser.ImageCollection.html +++ b/docs/Phaser.ImageCollection.html @@ -2490,7 +2490,7 @@ Use setSpacing to change.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:02 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Input.html b/docs/Phaser.Input.html index 6f0ebb6a2..0a6a7e95d 100644 --- a/docs/Phaser.Input.html +++ b/docs/Phaser.Input.html @@ -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 Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:02 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.InputHandler.html b/docs/Phaser.InputHandler.html index bf8ca1a80..77a7beb62 100644 --- a/docs/Phaser.InputHandler.html +++ b/docs/Phaser.InputHandler.html @@ -9164,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 Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:02 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Key.html b/docs/Phaser.Key.html index 8fd1972bb..5a68925f1 100644 --- a/docs/Phaser.Key.html +++ b/docs/Phaser.Key.html @@ -3116,7 +3116,7 @@ or was pressed down longer ago than then given duration.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:02 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.KeyCode.html b/docs/Phaser.KeyCode.html index 7777fbb40..884b80df5 100644 --- a/docs/Phaser.KeyCode.html +++ b/docs/Phaser.KeyCode.html @@ -6631,7 +6631,7 @@ the latter approach is supported for compatibility.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:02 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Keyboard.html b/docs/Phaser.Keyboard.html index 02d9d9c52..868f0239f 100644 --- a/docs/Phaser.Keyboard.html +++ b/docs/Phaser.Keyboard.html @@ -4369,7 +4369,7 @@ or was pressed down longer ago than then given duration.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:02 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Line.html b/docs/Phaser.Line.html index 7a3585040..ccd0a899a 100644 --- a/docs/Phaser.Line.html +++ b/docs/Phaser.Line.html @@ -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 Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:02 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.LinkedList.html b/docs/Phaser.LinkedList.html index d2b98b2bd..e9549dc23 100644 --- a/docs/Phaser.LinkedList.html +++ b/docs/Phaser.LinkedList.html @@ -2088,7 +2088,7 @@ The function must exist on the member.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:02 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Loader.html b/docs/Phaser.Loader.html index b965571a0..dd8a832b9 100644 --- a/docs/Phaser.Loader.html +++ b/docs/Phaser.Loader.html @@ -11682,7 +11682,7 @@ If you do not desire this action then provide a URL.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:02 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.LoaderParser.html b/docs/Phaser.LoaderParser.html index 0ceddc376..b27f089e0 100644 --- a/docs/Phaser.LoaderParser.html +++ b/docs/Phaser.LoaderParser.html @@ -2154,7 +2154,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:39 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:02 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.MSPointer.html b/docs/Phaser.MSPointer.html index 51787fc31..71ae8dd46 100644 --- a/docs/Phaser.MSPointer.html +++ b/docs/Phaser.MSPointer.html @@ -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 Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:03 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Math.html b/docs/Phaser.Math.html index 8656039e5..8b7e051a4 100644 --- a/docs/Phaser.Math.html +++ b/docs/Phaser.Math.html @@ -11190,7 +11190,7 @@ As will 14 snap to 10... but 16 will snap to 15.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:02 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Matrix.html b/docs/Phaser.Matrix.html index 593fa9849..1af9f21a5 100644 --- a/docs/Phaser.Matrix.html +++ b/docs/Phaser.Matrix.html @@ -4094,7 +4094,7 @@ This is the same as Matrix.tx += x.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:03 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Mouse.html b/docs/Phaser.Mouse.html index e3c4e3ecb..0be7d407a 100644 --- a/docs/Phaser.Mouse.html +++ b/docs/Phaser.Mouse.html @@ -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 Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:03 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Net.html b/docs/Phaser.Net.html index aef73ab2c..868824130 100644 --- a/docs/Phaser.Net.html +++ b/docs/Phaser.Net.html @@ -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 Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:03 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Particle.html b/docs/Phaser.Particle.html index 6b37425a4..0c2c56dd0 100644 --- a/docs/Phaser.Particle.html +++ b/docs/Phaser.Particle.html @@ -11846,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 Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:03 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 49c1d6b20..74ea61dae 100644 --- a/docs/Phaser.Particles.Arcade.Emitter.html +++ b/docs/Phaser.Particles.Arcade.Emitter.html @@ -24597,7 +24597,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:03 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Particles.Arcade.html b/docs/Phaser.Particles.Arcade.html index 27bb5ff89..3a4567f87 100644 --- a/docs/Phaser.Particles.Arcade.html +++ b/docs/Phaser.Particles.Arcade.html @@ -1360,7 +1360,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:03 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Particles.html b/docs/Phaser.Particles.html index 32b04362d..256c1d5db 100644 --- a/docs/Phaser.Particles.html +++ b/docs/Phaser.Particles.html @@ -1920,7 +1920,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:03 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 29b7e5cc5..16b15683e 100644 --- a/docs/Phaser.Physics.Arcade.Body.html +++ b/docs/Phaser.Physics.Arcade.Body.html @@ -8490,7 +8490,7 @@ either the duration or distance counters expire.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:03 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 c7d6cc654..900c5d9ea 100644 --- a/docs/Phaser.Physics.Arcade.TilemapCollision.html +++ b/docs/Phaser.Physics.Arcade.TilemapCollision.html @@ -1406,7 +1406,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:03 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.Arcade.html b/docs/Phaser.Physics.Arcade.html index ea38f64ff..01cab771d 100644 --- a/docs/Phaser.Physics.Arcade.html +++ b/docs/Phaser.Physics.Arcade.html @@ -10482,7 +10482,7 @@ taking their x/y and center into account relative to the world.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:03 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 63502a225..033f84927 100644 --- a/docs/Phaser.Physics.Ninja.AABB.html +++ b/docs/Phaser.Physics.Ninja.AABB.html @@ -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 Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:03 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 67c678579..c91421ba9 100644 --- a/docs/Phaser.Physics.Ninja.Body.html +++ b/docs/Phaser.Physics.Ninja.Body.html @@ -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 Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 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 82d132feb..dc6bf402c 100644 --- a/docs/Phaser.Physics.Ninja.Circle.html +++ b/docs/Phaser.Physics.Ninja.Circle.html @@ -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 Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 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 64c466e3b..994605a02 100644 --- a/docs/Phaser.Physics.Ninja.Tile.html +++ b/docs/Phaser.Physics.Ninja.Tile.html @@ -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 Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.Ninja.html b/docs/Phaser.Physics.Ninja.html index 3678fdbfb..4f03532cf 100644 --- a/docs/Phaser.Physics.Ninja.html +++ b/docs/Phaser.Physics.Ninja.html @@ -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 Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:03 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 934d9809a..988d50c8b 100644 --- a/docs/Phaser.Physics.P2.Body.html +++ b/docs/Phaser.Physics.P2.Body.html @@ -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 Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 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 950a023f5..5c5d3b400 100644 --- a/docs/Phaser.Physics.P2.BodyDebug.html +++ b/docs/Phaser.Physics.P2.BodyDebug.html @@ -20216,7 +20216,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 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 df4fc1a0e..e75e8b102 100644 --- a/docs/Phaser.Physics.P2.CollisionGroup.html +++ b/docs/Phaser.Physics.P2.CollisionGroup.html @@ -1455,7 +1455,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 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 6fccba790..24db06afe 100644 --- a/docs/Phaser.Physics.P2.ContactMaterial.html +++ b/docs/Phaser.Physics.P2.ContactMaterial.html @@ -1469,7 +1469,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 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 f694778c2..130fb2b29 100644 --- a/docs/Phaser.Physics.P2.DistanceConstraint.html +++ b/docs/Phaser.Physics.P2.DistanceConstraint.html @@ -1745,7 +1745,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 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 5e8694166..53011e75f 100644 --- a/docs/Phaser.Physics.P2.FixtureList.html +++ b/docs/Phaser.Physics.P2.FixtureList.html @@ -2568,7 +2568,7 @@ during runtime (to remove parts, set masks, categories & sensor properties)< Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 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 657d44735..3aa4fa30a 100644 --- a/docs/Phaser.Physics.P2.GearConstraint.html +++ b/docs/Phaser.Physics.P2.GearConstraint.html @@ -1675,7 +1675,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 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 e014d5706..ae3ca416b 100644 --- a/docs/Phaser.Physics.P2.InversePointProxy.html +++ b/docs/Phaser.Physics.P2.InversePointProxy.html @@ -1646,7 +1646,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 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 af6e1a5ae..b7177f3a7 100644 --- a/docs/Phaser.Physics.P2.LockConstraint.html +++ b/docs/Phaser.Physics.P2.LockConstraint.html @@ -1710,7 +1710,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 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 a44618cc6..28456710a 100644 --- a/docs/Phaser.Physics.P2.Material.html +++ b/docs/Phaser.Physics.P2.Material.html @@ -1456,7 +1456,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 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 01092600e..7a11a506b 100644 --- a/docs/Phaser.Physics.P2.PointProxy.html +++ b/docs/Phaser.Physics.P2.PointProxy.html @@ -1646,7 +1646,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 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 618eef837..80eda64fd 100644 --- a/docs/Phaser.Physics.P2.PrismaticConstraint.html +++ b/docs/Phaser.Physics.P2.PrismaticConstraint.html @@ -1784,7 +1784,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 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 1d1939bbc..a59f955c9 100644 --- a/docs/Phaser.Physics.P2.RevoluteConstraint.html +++ b/docs/Phaser.Physics.P2.RevoluteConstraint.html @@ -1746,7 +1746,7 @@ The pivot points are given in world (pixel) coordinates.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 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 cd9587f44..b0ccfe7af 100644 --- a/docs/Phaser.Physics.P2.RotationalSpring.html +++ b/docs/Phaser.Physics.P2.RotationalSpring.html @@ -1768,7 +1768,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 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 01d6f2007..9147334d2 100644 --- a/docs/Phaser.Physics.P2.Spring.html +++ b/docs/Phaser.Physics.P2.Spring.html @@ -1918,7 +1918,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.P2.html b/docs/Phaser.Physics.P2.html index ffcef3e27..e60c63e91 100644 --- a/docs/Phaser.Physics.P2.html +++ b/docs/Phaser.Physics.P2.html @@ -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 Jul 08 2016 15:42:41 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:04 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Physics.html b/docs/Phaser.Physics.html index 8764b2da9..35981649c 100644 --- a/docs/Phaser.Physics.html +++ b/docs/Phaser.Physics.html @@ -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 Jul 08 2016 15:42:40 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:03 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Plugin.html b/docs/Phaser.Plugin.html index 00b02efe8..6d612116b 100644 --- a/docs/Phaser.Plugin.html +++ b/docs/Phaser.Plugin.html @@ -2284,7 +2284,7 @@ It is only called if active is set to true.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.PluginManager.html b/docs/Phaser.PluginManager.html index 1781c91dc..73a9b53a4 100644 --- a/docs/Phaser.PluginManager.html +++ b/docs/Phaser.PluginManager.html @@ -2381,7 +2381,7 @@ It only calls plugins who have active=true.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Point.html b/docs/Phaser.Point.html index a13e20087..2aa71da48 100644 --- a/docs/Phaser.Point.html +++ b/docs/Phaser.Point.html @@ -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 Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Pointer.html b/docs/Phaser.Pointer.html index 27d465ed4..492ab25ea 100644 --- a/docs/Phaser.Pointer.html +++ b/docs/Phaser.Pointer.html @@ -6343,7 +6343,7 @@ Contains a button bitmask.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.PointerMode.html b/docs/Phaser.PointerMode.html index f5ef38a44..18ca8460b 100644 --- a/docs/Phaser.PointerMode.html +++ b/docs/Phaser.PointerMode.html @@ -1468,7 +1468,7 @@ This currently corresponds with Phaser.Poi Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Polygon.html b/docs/Phaser.Polygon.html index 91921fabf..2f84fd5ac 100644 --- a/docs/Phaser.Polygon.html +++ b/docs/Phaser.Polygon.html @@ -2447,7 +2447,7 @@ Also sets the Polygon.flattened property to true.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.QuadTree.html b/docs/Phaser.QuadTree.html index 8ab8c61f7..f85a57715 100644 --- a/docs/Phaser.QuadTree.html +++ b/docs/Phaser.QuadTree.html @@ -3131,7 +3131,7 @@ Original version at https://github.com/timohausmann/quadtree-js/

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.RandomDataGenerator.html b/docs/Phaser.RandomDataGenerator.html index db502175d..a832f06e1 100644 --- a/docs/Phaser.RandomDataGenerator.html +++ b/docs/Phaser.RandomDataGenerator.html @@ -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 Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Rectangle.html b/docs/Phaser.Rectangle.html index 14989f5cd..b787dd5d7 100644 --- a/docs/Phaser.Rectangle.html +++ b/docs/Phaser.Rectangle.html @@ -9139,7 +9139,7 @@ The x and y positions remain unchanged.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.RenderTexture.html b/docs/Phaser.RenderTexture.html index d8f6edccc..35d947900 100644 --- a/docs/Phaser.RenderTexture.html +++ b/docs/Phaser.RenderTexture.html @@ -4149,7 +4149,7 @@ pass null, leave it undefined or pass displayObject.worldTran Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.RequestAnimationFrame.html b/docs/Phaser.RequestAnimationFrame.html index 17745f84a..2314570b0 100644 --- a/docs/Phaser.RequestAnimationFrame.html +++ b/docs/Phaser.RequestAnimationFrame.html @@ -2086,7 +2086,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.RetroFont.html b/docs/Phaser.RetroFont.html index bf1c24422..57cbd88b2 100644 --- a/docs/Phaser.RetroFont.html +++ b/docs/Phaser.RetroFont.html @@ -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 Jul 08 2016 15:42:42 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Rope.html b/docs/Phaser.Rope.html index b0b9568eb..39a60c0a1 100644 --- a/docs/Phaser.Rope.html +++ b/docs/Phaser.Rope.html @@ -10672,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 Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.RoundedRectangle.html b/docs/Phaser.RoundedRectangle.html index 16b64b739..b3f25a341 100644 --- a/docs/Phaser.RoundedRectangle.html +++ b/docs/Phaser.RoundedRectangle.html @@ -2169,7 +2169,7 @@ radius properties as this RoundedRectangle object.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.ScaleManager.html b/docs/Phaser.ScaleManager.html index e9eeb5e81..e3926924a 100644 --- a/docs/Phaser.ScaleManager.html +++ b/docs/Phaser.ScaleManager.html @@ -7291,7 +7291,7 @@ device is reported to support fullscreen mode.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:05 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Signal.html b/docs/Phaser.Signal.html index b493dea7b..023cd35e9 100644 --- a/docs/Phaser.Signal.html +++ b/docs/Phaser.Signal.html @@ -3090,7 +3090,7 @@ See active to enable/disable the signal Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:06 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.SignalBinding.html b/docs/Phaser.SignalBinding.html index 6136b9b37..554f9cd80 100644 --- a/docs/Phaser.SignalBinding.html +++ b/docs/Phaser.SignalBinding.html @@ -2524,7 +2524,7 @@ If binding was added using Signal.addOnce() it will be automaticall Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:06 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.SinglePad.html b/docs/Phaser.SinglePad.html index f581cd354..21c2b0ca3 100644 --- a/docs/Phaser.SinglePad.html +++ b/docs/Phaser.SinglePad.html @@ -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 Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:06 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Sound.html b/docs/Phaser.Sound.html index ead99c1dd..9368f1475 100644 --- a/docs/Phaser.Sound.html +++ b/docs/Phaser.Sound.html @@ -6262,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 Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:06 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.SoundManager.html b/docs/Phaser.SoundManager.html index 50eff4dda..e0e0fdb81 100644 --- a/docs/Phaser.SoundManager.html +++ b/docs/Phaser.SoundManager.html @@ -4115,7 +4115,7 @@ Required for iOS audio device unlocking. Mostly just used internally.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:06 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Sprite.html b/docs/Phaser.Sprite.html index c5f4f6637..2bf01b23c 100644 --- a/docs/Phaser.Sprite.html +++ b/docs/Phaser.Sprite.html @@ -11428,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 Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:06 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.SpriteBatch.html b/docs/Phaser.SpriteBatch.html index 2b72e2f73..5458637d0 100644 --- a/docs/Phaser.SpriteBatch.html +++ b/docs/Phaser.SpriteBatch.html @@ -19991,7 +19991,7 @@ alphabetical sorting, mixing strings and numbers, and Unicode sorting. See MDN f Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:06 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Stage.html b/docs/Phaser.Stage.html index c4690db67..c8c564c5b 100644 --- a/docs/Phaser.Stage.html +++ b/docs/Phaser.Stage.html @@ -4593,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 Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:06 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.State.html b/docs/Phaser.State.html index 3de6b2fc0..4710a653d 100644 --- a/docs/Phaser.State.html +++ b/docs/Phaser.State.html @@ -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 Jul 08 2016 15:42:43 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:06 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.StateManager.html b/docs/Phaser.StateManager.html index 07c5a09d2..0696cd429 100644 --- a/docs/Phaser.StateManager.html +++ b/docs/Phaser.StateManager.html @@ -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 Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:06 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Text.html b/docs/Phaser.Text.html index 16bfc464f..2a5d784e7 100644 --- a/docs/Phaser.Text.html +++ b/docs/Phaser.Text.html @@ -16884,7 +16884,7 @@ This is called automatically by Text.updateText.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:06 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Tile.html b/docs/Phaser.Tile.html index 63b430f42..7864e87a5 100644 --- a/docs/Phaser.Tile.html +++ b/docs/Phaser.Tile.html @@ -4548,7 +4548,7 @@ The callback must true true for collision processing to take place.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:07 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.TileSprite.html b/docs/Phaser.TileSprite.html index 953e5d981..05611f77d 100644 --- a/docs/Phaser.TileSprite.html +++ b/docs/Phaser.TileSprite.html @@ -11221,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 Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:07 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Tilemap.html b/docs/Phaser.Tilemap.html index ebbd0e8c0..58cd33a7d 100644 --- a/docs/Phaser.Tilemap.html +++ b/docs/Phaser.Tilemap.html @@ -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 Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:07 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.TilemapLayer.html b/docs/Phaser.TilemapLayer.html index e3c2cfb12..869175d95 100644 --- a/docs/Phaser.TilemapLayer.html +++ b/docs/Phaser.TilemapLayer.html @@ -13858,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 Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:07 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.TilemapParser.html b/docs/Phaser.TilemapParser.html index 237418ce4..f1dc8cf5a 100644 --- a/docs/Phaser.TilemapParser.html +++ b/docs/Phaser.TilemapParser.html @@ -2429,7 +2429,7 @@ during the game) then leave the default value set.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:07 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Tileset.html b/docs/Phaser.Tileset.html index 524727ef5..47b102996 100644 --- a/docs/Phaser.Tileset.html +++ b/docs/Phaser.Tileset.html @@ -2944,7 +2944,7 @@ Use setSpacing to change.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:07 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Time.html b/docs/Phaser.Time.html index acd9dccc9..1d6049ba1 100644 --- a/docs/Phaser.Time.html +++ b/docs/Phaser.Time.html @@ -3897,7 +3897,7 @@ it's set to the same value as desiredFps.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:07 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Timer.html b/docs/Phaser.Timer.html index 9db72ee91..53b8cf851 100644 --- a/docs/Phaser.Timer.html +++ b/docs/Phaser.Timer.html @@ -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 Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:07 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.TimerEvent.html b/docs/Phaser.TimerEvent.html index c38d57bce..364ab9704 100644 --- a/docs/Phaser.TimerEvent.html +++ b/docs/Phaser.TimerEvent.html @@ -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 Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:07 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Touch.html b/docs/Phaser.Touch.html index 4bd14568e..89105af6c 100644 --- a/docs/Phaser.Touch.html +++ b/docs/Phaser.Touch.html @@ -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 Jul 08 2016 15:42:44 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:07 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Tween.html b/docs/Phaser.Tween.html index 3573b7a85..11c6a51d2 100644 --- a/docs/Phaser.Tween.html +++ b/docs/Phaser.Tween.html @@ -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 Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:07 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.TweenData.html b/docs/Phaser.TweenData.html index 5bb0108ea..c0111656b 100644 --- a/docs/Phaser.TweenData.html +++ b/docs/Phaser.TweenData.html @@ -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 Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:07 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.TweenManager.html b/docs/Phaser.TweenManager.html index 9c4ec0233..cd43e0033 100644 --- a/docs/Phaser.TweenManager.html +++ b/docs/Phaser.TweenManager.html @@ -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 Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:07 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Utils.Debug.html b/docs/Phaser.Utils.Debug.html index 74d792d7c..0f6080621 100644 --- a/docs/Phaser.Utils.Debug.html +++ b/docs/Phaser.Utils.Debug.html @@ -7735,7 +7735,7 @@ Called by ScaleManager.onSizeChange only in WebGL mode.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:07 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Utils.html b/docs/Phaser.Utils.html index 08b90e514..ac7ccae63 100644 --- a/docs/Phaser.Utils.html +++ b/docs/Phaser.Utils.html @@ -3252,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 Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:07 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Video.html b/docs/Phaser.Video.html index a05c6dafc..8df4ae31c 100644 --- a/docs/Phaser.Video.html +++ b/docs/Phaser.Video.html @@ -5931,7 +5931,7 @@ Then dispatches the onChangeSource signal.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.Weapon.html b/docs/Phaser.Weapon.html index c8c524774..9bd18a32b 100644 --- a/docs/Phaser.Weapon.html +++ b/docs/Phaser.Weapon.html @@ -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 Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.World.html b/docs/Phaser.World.html index 748443a5c..9d6ce3923 100644 --- a/docs/Phaser.World.html +++ b/docs/Phaser.World.html @@ -21180,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 Jul 08 2016 15:42:45 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:07:08 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/Phaser.html b/docs/Phaser.html index 5bc10081c..272d8423e 100644 --- a/docs/Phaser.html +++ b/docs/Phaser.html @@ -2168,7 +2168,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/classes.list.html b/docs/classes.list.html index f3c1a1a38..dd589e4a1 100644 --- a/docs/classes.list.html +++ b/docs/classes.list.html @@ -2831,7 +2831,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 baae28dc7..83f657462 100644 --- a/docs/docs_pixi-jsdoc.js.html +++ b/docs/docs_pixi-jsdoc.js.html @@ -5210,7 +5210,7 @@ this function is taken from Starling Framework as its pretty neat ;) Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/global.html b/docs/global.html index 6f484c3c7..d2f1f5336 100644 --- a/docs/global.html +++ b/docs/global.html @@ -6054,7 +6054,7 @@ as well as PIXI.DisplayObject and all derived types.

Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/index.html b/docs/index.html index a20c99e47..76b7a201a 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1275,13 +1275,13 @@
-

8th July 2016

+

11th 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.

+

Welcome to Phaser 2.6.1. Our eighth 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.

+

Check the Change Log to see what we've done so far. Or switch to the master branch for the current stable 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.

@@ -1311,8 +1311,8 @@

Phaser is hosted on Github. There are a number of ways to download it:

Bower / npm

Install via bower

@@ -1321,11 +1321,11 @@

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>

+

<script src="//cdn.jsdelivr.net/phaser/2.6.1/phaser.js"></script>

or the minified version:

-

<script src="//cdn.jsdelivr.net/phaser/2.6.0/phaser.min.js"></script>

+

<script src="//cdn.jsdelivr.net/phaser/2.6.1/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>

+

<script src="https://cdnjs.cloudflare.com/ajax/libs/phaser/2.6.1/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 @@ -1425,6 +1425,9 @@ require('phaser');

Building from source

Should you wish t

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.1 - "Caemlyn" - 11th July 2016

Bug Fixes

    +
  • Fixed Uncaught TypeError: Cannot set property 'x' of undefined in Body.js (thanks @ErwanErwan #2607)
  • +

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)
  • @@ -1535,7 +1538,7 @@ require('phaser');

    Building from source

    Should you wish t Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/namespaces.list.html b/docs/namespaces.list.html index 7414e516c..5d6564ee0 100644 --- a/docs/namespaces.list.html +++ b/docs/namespaces.list.html @@ -2831,7 +2831,7 @@ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/docs/src_Phaser.js.html b/docs/src_Phaser.js.html index 0f6a3ef83..9bae1c080 100644 --- a/docs/src_Phaser.js.html +++ b/docs/src_Phaser.js.html @@ -1241,7 +1241,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.6.0', + VERSION: '2.6.1', /** * An array of Phaser game instances. @@ -1786,7 +1786,7 @@ var Phaser = Phaser || { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 0049b815e..e61f5c488 100644 --- a/docs/src_animation_Animation.js.html +++ b/docs/src_animation_Animation.js.html @@ -2127,7 +2127,7 @@ Phaser.Animation.generateFrameNames = function (prefix, start, stop, suffix, zer Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 f821d8225..5ce6bdd1c 100644 --- a/docs/src_animation_AnimationManager.js.html +++ b/docs/src_animation_AnimationManager.js.html @@ -1813,7 +1813,7 @@ Object.defineProperty(Phaser.AnimationManager.prototype, 'frameName', { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 42a5ae0be..20c6bf7db 100644 --- a/docs/src_animation_AnimationParser.js.html +++ b/docs/src_animation_AnimationParser.js.html @@ -1572,7 +1572,7 @@ Phaser.AnimationParser = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 c87237954..98828919b 100644 --- a/docs/src_animation_Frame.js.html +++ b/docs/src_animation_Frame.js.html @@ -1475,7 +1475,7 @@ Phaser.Frame.prototype.constructor = Phaser.Frame; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 3feabffcf..01b307183 100644 --- a/docs/src_animation_FrameData.js.html +++ b/docs/src_animation_FrameData.js.html @@ -1523,7 +1523,7 @@ Object.defineProperty(Phaser.FrameData.prototype, "total", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 dee0f227b..1c81eec50 100644 --- a/docs/src_core_Camera.js.html +++ b/docs/src_core_Camera.js.html @@ -2184,7 +2184,7 @@ Object.defineProperty(Phaser.Camera.prototype, "shakeIntensity", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 3e962d60d..107a58d9e 100644 --- a/docs/src_core_Create.js.html +++ b/docs/src_core_Create.js.html @@ -1449,7 +1449,7 @@ Phaser.Create.prototype.constructor = Phaser.Create; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 08db66203..4743ce33e 100644 --- a/docs/src_core_Filter.js.html +++ b/docs/src_core_Filter.js.html @@ -1492,7 +1492,7 @@ Object.defineProperty(Phaser.Filter.prototype, 'height', { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 97174fbf6..20103720b 100644 --- a/docs/src_core_FlexGrid.js.html +++ b/docs/src_core_FlexGrid.js.html @@ -1572,7 +1572,7 @@ Phaser.FlexGrid.prototype.constructor = Phaser.FlexGrid; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 75ff7c8a2..226881599 100644 --- a/docs/src_core_FlexLayer.js.html +++ b/docs/src_core_FlexLayer.js.html @@ -1360,7 +1360,7 @@ Phaser.FlexLayer.prototype.debug = function () { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 37549b7d7..e55727dbf 100644 --- a/docs/src_core_Game.js.html +++ b/docs/src_core_Game.js.html @@ -2447,7 +2447,7 @@ Object.defineProperty(Phaser.Game.prototype, "paused", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 f4ba75fd7..75bf80311 100644 --- a/docs/src_core_Group.js.html +++ b/docs/src_core_Group.js.html @@ -4195,7 +4195,7 @@ Object.defineProperty(Phaser.Group.prototype, "bottom", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 cfe280c9d..50f3826bb 100644 --- a/docs/src_core_Plugin.js.html +++ b/docs/src_core_Plugin.js.html @@ -1367,7 +1367,7 @@ Phaser.Plugin.prototype.constructor = Phaser.Plugin; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 dae2e8497..e2e5abf04 100644 --- a/docs/src_core_PluginManager.js.html +++ b/docs/src_core_PluginManager.js.html @@ -1539,7 +1539,7 @@ Phaser.PluginManager.prototype.constructor = Phaser.PluginManager; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 86c7d2b97..44de262f2 100644 --- a/docs/src_core_ScaleManager.js.html +++ b/docs/src_core_ScaleManager.js.html @@ -3620,7 +3620,7 @@ Object.defineProperty(Phaser.ScaleManager.prototype, "isGameLandscape", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 4b01b37eb..caec591f9 100644 --- a/docs/src_core_Signal.js.html +++ b/docs/src_core_Signal.js.html @@ -1750,7 +1750,7 @@ Phaser.Signal.prototype.constructor = Phaser.Signal; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 7b0a78062..5f760631f 100644 --- a/docs/src_core_SignalBinding.js.html +++ b/docs/src_core_SignalBinding.js.html @@ -1444,7 +1444,7 @@ Phaser.SignalBinding.prototype.constructor = Phaser.SignalBinding; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 c0b07cc04..f8f9c277c 100644 --- a/docs/src_core_Stage.js.html +++ b/docs/src_core_Stage.js.html @@ -1657,7 +1657,7 @@ Object.defineProperty(Phaser.Stage.prototype, "smoothed", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 cc066322a..d47acb6ff 100644 --- a/docs/src_core_State.js.html +++ b/docs/src_core_State.js.html @@ -1476,7 +1476,7 @@ Phaser.State.prototype.constructor = Phaser.State; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 4152fdf11..7995f20be 100644 --- a/docs/src_core_StateManager.js.html +++ b/docs/src_core_StateManager.js.html @@ -2036,7 +2036,7 @@ Object.defineProperty(Phaser.StateManager.prototype, "created", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 591296acd..cf95bce72 100644 --- a/docs/src_core_World.js.html +++ b/docs/src_core_World.js.html @@ -1606,7 +1606,7 @@ Object.defineProperty(Phaser.World.prototype, "randomY", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 2f5ad1dbd..e9c9e1e28 100644 --- a/docs/src_gameobjects_BitmapData.js.html +++ b/docs/src_gameobjects_BitmapData.js.html @@ -3685,7 +3685,7 @@ Phaser.BitmapData.prototype.constructor = Phaser.BitmapData; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 c584e9f08..76ea0ea3a 100644 --- a/docs/src_gameobjects_BitmapText.js.html +++ b/docs/src_gameobjects_BitmapText.js.html @@ -1956,7 +1956,7 @@ Object.defineProperty(Phaser.BitmapText.prototype, 'smoothed', { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 aa4394ee7..5264d4f4b 100644 --- a/docs/src_gameobjects_Button.js.html +++ b/docs/src_gameobjects_Button.js.html @@ -1840,7 +1840,7 @@ Phaser.Button.prototype.onInputUpHandler = function (sprite, pointer, isOver) { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 7bba1e3fe..3a93f618d 100644 --- a/docs/src_gameobjects_Creature.js.html +++ b/docs/src_gameobjects_Creature.js.html @@ -1726,7 +1726,7 @@ Object.defineProperty(Phaser.Creature.prototype, 'loop', { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 239147229..22baf419a 100644 --- a/docs/src_gameobjects_GameObjectCreator.js.html +++ b/docs/src_gameobjects_GameObjectCreator.js.html @@ -1674,7 +1674,7 @@ Phaser.GameObjectCreator.prototype.constructor = Phaser.GameObjectCreator; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 14599ac57..e8c8ab603 100644 --- a/docs/src_gameobjects_GameObjectFactory.js.html +++ b/docs/src_gameobjects_GameObjectFactory.js.html @@ -1837,7 +1837,7 @@ Phaser.GameObjectFactory.prototype.constructor = Phaser.GameObjectFactory; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 424454ac1..4abdb938d 100644 --- a/docs/src_gameobjects_Graphics.js.html +++ b/docs/src_gameobjects_Graphics.js.html @@ -1482,7 +1482,7 @@ Phaser.Graphics.prototype.drawTriangles = function(vertices, indices, cull) { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 640fda553..cca395143 100644 --- a/docs/src_gameobjects_Image.js.html +++ b/docs/src_gameobjects_Image.js.html @@ -1337,7 +1337,7 @@ Phaser.Image.prototype.preUpdate = function() { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 7c4e37183..6cabc357c 100644 --- a/docs/src_gameobjects_Particle.js.html +++ b/docs/src_gameobjects_Particle.js.html @@ -1410,7 +1410,7 @@ Phaser.Particle.prototype.reset = function(x, y, health) { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 03a3f947c..7f113d4b2 100644 --- a/docs/src_gameobjects_RenderTexture.js.html +++ b/docs/src_gameobjects_RenderTexture.js.html @@ -1398,7 +1398,7 @@ Phaser.RenderTexture.prototype.render = function (displayObject, matrix, clear) Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 8d3bac66b..45e5a21db 100644 --- a/docs/src_gameobjects_RetroFont.js.html +++ b/docs/src_gameobjects_RetroFont.js.html @@ -1849,7 +1849,7 @@ Object.defineProperty(Phaser.RetroFont.prototype, "smoothed", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 6910b22e2..ed28e5b7c 100644 --- a/docs/src_gameobjects_Rope.js.html +++ b/docs/src_gameobjects_Rope.js.html @@ -1454,7 +1454,7 @@ Object.defineProperty(Phaser.Rope.prototype, "segments", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 1beffaed5..051ce5930 100644 --- a/docs/src_gameobjects_Sprite.js.html +++ b/docs/src_gameobjects_Sprite.js.html @@ -1361,7 +1361,7 @@ Phaser.Sprite.prototype.preUpdate = function() { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 230735c3c..4c0134333 100644 --- a/docs/src_gameobjects_SpriteBatch.js.html +++ b/docs/src_gameobjects_SpriteBatch.js.html @@ -1286,7 +1286,7 @@ Phaser.SpriteBatch.prototype.constructor = Phaser.SpriteBatch; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 4428d9690..5173f1c53 100644 --- a/docs/src_gameobjects_Text.js.html +++ b/docs/src_gameobjects_Text.js.html @@ -3537,7 +3537,7 @@ Phaser.Text.fontPropertiesContext = Phaser.Text.fontPropertiesCanvas.getContext( Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 35164eceb..dd103bc87 100644 --- a/docs/src_gameobjects_TileSprite.js.html +++ b/docs/src_gameobjects_TileSprite.js.html @@ -1459,7 +1459,7 @@ Phaser.TileSprite.prototype.reset = function(x, y) { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 0d6870ded..cddd5380b 100644 --- a/docs/src_gameobjects_Video.js.html +++ b/docs/src_gameobjects_Video.js.html @@ -2651,7 +2651,7 @@ Phaser.Video.prototype.constructor = Phaser.Video; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 495b57f0a..c29f63ed0 100644 --- a/docs/src_gameobjects_components_Angle.js.html +++ b/docs/src_gameobjects_components_Angle.js.html @@ -1290,7 +1290,7 @@ Phaser.Component.Angle.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 09f1f0898..0476344c9 100644 --- a/docs/src_gameobjects_components_Animation.js.html +++ b/docs/src_gameobjects_components_Animation.js.html @@ -1285,7 +1285,7 @@ Phaser.Component.Animation.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 bcb193e1c..3190de5ab 100644 --- a/docs/src_gameobjects_components_AutoCull.js.html +++ b/docs/src_gameobjects_components_AutoCull.js.html @@ -1299,7 +1299,7 @@ Phaser.Component.AutoCull.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 0f79fc5d0..1c308d3ee 100644 --- a/docs/src_gameobjects_components_Bounds.js.html +++ b/docs/src_gameobjects_components_Bounds.js.html @@ -1644,7 +1644,7 @@ Phaser.Group.prototype.alignTo = Phaser.Component.Bounds.prototype.alignTo; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 031153522..f175ca5bb 100644 --- a/docs/src_gameobjects_components_BringToTop.js.html +++ b/docs/src_gameobjects_components_BringToTop.js.html @@ -1341,7 +1341,7 @@ Phaser.Component.BringToTop.prototype.moveDown = function () { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 5c1a3d4d0..7a1df48c3 100644 --- a/docs/src_gameobjects_components_Component.js.html +++ b/docs/src_gameobjects_components_Component.js.html @@ -1252,7 +1252,7 @@ Phaser.Component = function () {}; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 e508d24bc..e143cb9c1 100644 --- a/docs/src_gameobjects_components_Core.js.html +++ b/docs/src_gameobjects_components_Core.js.html @@ -1607,7 +1607,7 @@ Phaser.Component.Core.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 424bd8d3e..4c1e2af2b 100644 --- a/docs/src_gameobjects_components_Crop.js.html +++ b/docs/src_gameobjects_components_Crop.js.html @@ -1362,7 +1362,7 @@ Phaser.Component.Crop.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 8fdd05de1..eee3661c3 100644 --- a/docs/src_gameobjects_components_Delta.js.html +++ b/docs/src_gameobjects_components_Delta.js.html @@ -1313,7 +1313,7 @@ Phaser.Component.Delta.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 6be7a9023..4406cf5e5 100644 --- a/docs/src_gameobjects_components_Destroy.js.html +++ b/docs/src_gameobjects_components_Destroy.js.html @@ -1409,7 +1409,7 @@ Phaser.Component.Destroy.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 cf992098b..6504efbb0 100644 --- a/docs/src_gameobjects_components_Events.js.html +++ b/docs/src_gameobjects_components_Events.js.html @@ -1540,7 +1540,7 @@ for (var prop in Phaser.Events.prototype) Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 c4bec213c..1c720bb62 100644 --- a/docs/src_gameobjects_components_FixedToCamera.js.html +++ b/docs/src_gameobjects_components_FixedToCamera.js.html @@ -1333,7 +1333,7 @@ Phaser.Component.FixedToCamera.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 6336bf7cd..0caf9fade 100644 --- a/docs/src_gameobjects_components_Health.js.html +++ b/docs/src_gameobjects_components_Health.js.html @@ -1351,7 +1351,7 @@ Phaser.Component.Health.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 6a571e2ad..d83a4320b 100644 --- a/docs/src_gameobjects_components_InCamera.js.html +++ b/docs/src_gameobjects_components_InCamera.js.html @@ -1281,7 +1281,7 @@ Phaser.Component.InCamera.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 3f7c2da5b..feff88a48 100644 --- a/docs/src_gameobjects_components_InWorld.js.html +++ b/docs/src_gameobjects_components_InWorld.js.html @@ -1384,7 +1384,7 @@ Phaser.Component.InWorld.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 cee3f5a8e..49cbcddd7 100644 --- a/docs/src_gameobjects_components_InputEnabled.js.html +++ b/docs/src_gameobjects_components_InputEnabled.js.html @@ -1321,7 +1321,7 @@ Phaser.Component.InputEnabled.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 09747463f..18c16e610 100644 --- a/docs/src_gameobjects_components_LifeSpan.js.html +++ b/docs/src_gameobjects_components_LifeSpan.js.html @@ -1373,7 +1373,7 @@ Phaser.Component.LifeSpan.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 87a34de33..17cf241aa 100644 --- a/docs/src_gameobjects_components_LoadTexture.js.html +++ b/docs/src_gameobjects_components_LoadTexture.js.html @@ -1536,7 +1536,7 @@ Phaser.Component.LoadTexture.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 13aebe15c..831fef9c5 100644 --- a/docs/src_gameobjects_components_Overlap.js.html +++ b/docs/src_gameobjects_components_Overlap.js.html @@ -1280,7 +1280,7 @@ Phaser.Component.Overlap.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 fa4ffca5c..fa8d78436 100644 --- a/docs/src_gameobjects_components_PhysicsBody.js.html +++ b/docs/src_gameobjects_components_PhysicsBody.js.html @@ -1390,7 +1390,7 @@ Phaser.Component.PhysicsBody.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 855e97d01..d74f305a2 100644 --- a/docs/src_gameobjects_components_Reset.js.html +++ b/docs/src_gameobjects_components_Reset.js.html @@ -1308,7 +1308,7 @@ Phaser.Component.Reset.prototype.reset = function (x, y, health) { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 9bb400d5e..5ae701a80 100644 --- a/docs/src_gameobjects_components_ScaleMinMax.js.html +++ b/docs/src_gameobjects_components_ScaleMinMax.js.html @@ -1412,7 +1412,7 @@ Phaser.Component.ScaleMinMax.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 a463ab7f0..2a928fdf7 100644 --- a/docs/src_gameobjects_components_Smoothed.js.html +++ b/docs/src_gameobjects_components_Smoothed.js.html @@ -1298,7 +1298,7 @@ Phaser.Component.Smoothed.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 dab4bccec..becfde600 100644 --- a/docs/src_geom_Circle.js.html +++ b/docs/src_geom_Circle.js.html @@ -1818,7 +1818,7 @@ PIXI.Circle = Phaser.Circle; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 7d2db2f5a..a1de39446 100644 --- a/docs/src_geom_Ellipse.js.html +++ b/docs/src_geom_Ellipse.js.html @@ -1571,7 +1571,7 @@ PIXI.Ellipse = Phaser.Ellipse; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 ec0aaa52a..6857ab495 100644 --- a/docs/src_geom_Line.js.html +++ b/docs/src_geom_Line.js.html @@ -1980,7 +1980,7 @@ Phaser.Line.reflect = function (a, b) { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 0955dd86e..f01f9a882 100644 --- a/docs/src_geom_Matrix.js.html +++ b/docs/src_geom_Matrix.js.html @@ -1634,7 +1634,7 @@ PIXI.identityMatrix = Phaser.identityMatrix; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 61328c398..6a6431b47 100644 --- a/docs/src_geom_Point.js.html +++ b/docs/src_geom_Point.js.html @@ -2151,7 +2151,7 @@ PIXI.Point = Phaser.Point; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 166e070c1..faf611a39 100644 --- a/docs/src_geom_Polygon.js.html +++ b/docs/src_geom_Polygon.js.html @@ -1571,7 +1571,7 @@ PIXI.Polygon = Phaser.Polygon; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 1ce083d87..d822ce9b3 100644 --- a/docs/src_geom_Rectangle.js.html +++ b/docs/src_geom_Rectangle.js.html @@ -2304,7 +2304,7 @@ PIXI.EmptyRectangle = new Phaser.Rectangle(0, 0, 0, 0); Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 4609c2830..860e5e8e3 100644 --- a/docs/src_geom_RoundedRectangle.js.html +++ b/docs/src_geom_RoundedRectangle.js.html @@ -1356,7 +1356,7 @@ PIXI.RoundedRectangle = Phaser.RoundedRectangle; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 610266697..c8fa33aab 100644 --- a/docs/src_input_DeviceButton.js.html +++ b/docs/src_input_DeviceButton.js.html @@ -1566,7 +1566,7 @@ Object.defineProperty(Phaser.DeviceButton.prototype, "duration", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 bcfcf940a..b73920828 100644 --- a/docs/src_input_Gamepad.js.html +++ b/docs/src_input_Gamepad.js.html @@ -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 Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 0e9c26d60..39c6e171a 100644 --- a/docs/src_input_Input.js.html +++ b/docs/src_input_Input.js.html @@ -2378,7 +2378,7 @@ Object.defineProperty(Phaser.Input.prototype, "worldY", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 b73c71431..e6b44a25f 100644 --- a/docs/src_input_InputHandler.js.html +++ b/docs/src_input_InputHandler.js.html @@ -3004,7 +3004,7 @@ Phaser.InputHandler.prototype.constructor = Phaser.InputHandler; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 ecf9cdf31..e86c18679 100644 --- a/docs/src_input_Key.js.html +++ b/docs/src_input_Key.js.html @@ -1609,7 +1609,7 @@ Phaser.Key.prototype.constructor = Phaser.Key; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 128caf187..07363c9e8 100644 --- a/docs/src_input_Keyboard.js.html +++ b/docs/src_input_Keyboard.js.html @@ -2066,7 +2066,7 @@ for (var key in Phaser.KeyCode) { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 8175a6e0d..6606ee215 100644 --- a/docs/src_input_MSPointer.js.html +++ b/docs/src_input_MSPointer.js.html @@ -1695,7 +1695,7 @@ Phaser.MSPointer.prototype.constructor = Phaser.MSPointer; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 82704c08f..c72ed3cff 100644 --- a/docs/src_input_Mouse.js.html +++ b/docs/src_input_Mouse.js.html @@ -1964,7 +1964,7 @@ Object.defineProperties(WheelEventProxy.prototype, { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 f7e39f336..1cbfa5b83 100644 --- a/docs/src_input_Pointer.js.html +++ b/docs/src_input_Pointer.js.html @@ -2520,7 +2520,7 @@ Phaser.PointerMode = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 12ef441b5..9166bb4de 100644 --- a/docs/src_input_SinglePad.js.html +++ b/docs/src_input_SinglePad.js.html @@ -1800,7 +1800,7 @@ Phaser.SinglePad.prototype.constructor = Phaser.SinglePad; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 e0a6218c9..96719aaf3 100644 --- a/docs/src_input_Touch.js.html +++ b/docs/src_input_Touch.js.html @@ -1708,7 +1708,7 @@ Phaser.Touch.prototype.constructor = Phaser.Touch; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 3ccd53715..56575560f 100644 --- a/docs/src_loader_Cache.js.html +++ b/docs/src_loader_Cache.js.html @@ -3226,7 +3226,7 @@ Phaser.Cache.prototype.constructor = Phaser.Cache; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 5bba0da65..1366312cc 100644 --- a/docs/src_loader_Loader.js.html +++ b/docs/src_loader_Loader.js.html @@ -4299,7 +4299,7 @@ Phaser.Loader.prototype.constructor = Phaser.Loader; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 7775c3ea9..1aa03d731 100644 --- a/docs/src_loader_LoaderParser.js.html +++ b/docs/src_loader_LoaderParser.js.html @@ -1412,7 +1412,7 @@ Phaser.LoaderParser = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 35006a369..2eed1bcd8 100644 --- a/docs/src_math_Math.js.html +++ b/docs/src_math_Math.js.html @@ -2370,7 +2370,7 @@ Phaser.Math.radToDeg = function radToDeg (radians) { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 af5720db6..c78a97802 100644 --- a/docs/src_math_QuadTree.js.html +++ b/docs/src_math_QuadTree.js.html @@ -1597,7 +1597,7 @@ Phaser.QuadTree.prototype.constructor = Phaser.QuadTree; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 8a43a7a7f..a1120ce92 100644 --- a/docs/src_math_RandomDataGenerator.js.html +++ b/docs/src_math_RandomDataGenerator.js.html @@ -1602,7 +1602,7 @@ Phaser.RandomDataGenerator.prototype.constructor = Phaser.RandomDataGenerator; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 006a80984..0467b713e 100644 --- a/docs/src_net_Net.js.html +++ b/docs/src_net_Net.js.html @@ -1411,7 +1411,7 @@ Phaser.Net.prototype.constructor = Phaser.Net; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 a9e541019..6f5c45dd9 100644 --- a/docs/src_particles_Particles.js.html +++ b/docs/src_particles_Particles.js.html @@ -1325,7 +1325,7 @@ Phaser.Particles.prototype.constructor = Phaser.Particles; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 97e272a90..b3a12a35a 100644 --- a/docs/src_particles_arcade_ArcadeParticles.js.html +++ b/docs/src_particles_arcade_ArcadeParticles.js.html @@ -1256,7 +1256,7 @@ Phaser.Particles.Arcade = {}; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 b93495905..7646894b9 100644 --- a/docs/src_particles_arcade_Emitter.js.html +++ b/docs/src_particles_arcade_Emitter.js.html @@ -2246,7 +2246,7 @@ Object.defineProperty(Phaser.Particles.Arcade.Emitter.prototype, "bottom", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 8e294f811..e965187ee 100644 --- a/docs/src_physics_Physics.js.html +++ b/docs/src_physics_Physics.js.html @@ -1676,7 +1676,7 @@ Phaser.Physics.prototype.constructor = Phaser.Physics; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 6aefd9c25..eb4d7cf4f 100644 --- a/docs/src_physics_arcade_Body.js.html +++ b/docs/src_physics_arcade_Body.js.html @@ -2733,7 +2733,7 @@ Phaser.Physics.Arcade.Body.prototype.constructor = Phaser.Physics.Arcade.Body; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 21bec8c6c..7e46f4976 100644 --- a/docs/src_physics_arcade_TilemapCollision.js.html +++ b/docs/src_physics_arcade_TilemapCollision.js.html @@ -1660,7 +1660,7 @@ Phaser.Utils.mixinPrototype(Phaser.Physics.Arcade.prototype, Phaser.Physics.Arca Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 aaca65ee0..59da67e74 100644 --- a/docs/src_physics_arcade_World.js.html +++ b/docs/src_physics_arcade_World.js.html @@ -1932,7 +1932,7 @@ Phaser.Physics.Arcade.prototype = { if (this.skipQuadTree || sprite.body.skipQuadTree) { - var bounds; + var bounds = {}; for (var i = 0; i < group.hash.length; i++) { @@ -2045,7 +2045,7 @@ Phaser.Physics.Arcade.prototype = { for (var i = 0; i < group.hash.length; i++) { - var bounds1; + var bounds1 = {}; var object1 = group.hash[i]; // Skip duff entries - we can't check a non-existent sprite or one with no body @@ -2059,7 +2059,7 @@ Phaser.Physics.Arcade.prototype = { for (var j = i + 1; j < group.hash.length; j++) { - var bounds2; + var bounds2 = {}; var object2 = group.hash[j]; // Skip duff entries - we can't check a non-existent sprite or one with no body @@ -3351,7 +3351,7 @@ Phaser.Physics.Arcade.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 d91f229c3..8a78873b8 100644 --- a/docs/src_physics_ninja_AABB.js.html +++ b/docs/src_physics_ninja_AABB.js.html @@ -2273,7 +2273,7 @@ Phaser.Physics.Ninja.AABB.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 8ffa3e407..f0b61b55b 100644 --- a/docs/src_physics_ninja_Body.js.html +++ b/docs/src_physics_ninja_Body.js.html @@ -1814,7 +1814,7 @@ Phaser.Physics.Ninja.Body.render = function(context, body, color, filled) { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 66c788e71..38287e6d5 100644 --- a/docs/src_physics_ninja_Circle.js.html +++ b/docs/src_physics_ninja_Circle.js.html @@ -3895,7 +3895,7 @@ Phaser.Physics.Ninja.Circle.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 cb782203f..bde46491c 100644 --- a/docs/src_physics_ninja_Tile.js.html +++ b/docs/src_physics_ninja_Tile.js.html @@ -2016,7 +2016,7 @@ Phaser.Physics.Ninja.Tile.TYPE_HALF = 30; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 b103bf605..5835a3ae7 100644 --- a/docs/src_physics_ninja_World.js.html +++ b/docs/src_physics_ninja_World.js.html @@ -1853,7 +1853,7 @@ Phaser.Physics.Ninja.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 02c666925..b5b2ec113 100644 --- a/docs/src_physics_p2_Body.js.html +++ b/docs/src_physics_p2_Body.js.html @@ -3226,7 +3226,7 @@ Object.defineProperty(Phaser.Physics.P2.Body.prototype, "collideWorldBounds", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 653126576..7bd751c6b 100644 --- a/docs/src_physics_p2_BodyDebug.js.html +++ b/docs/src_physics_p2_BodyDebug.js.html @@ -1717,7 +1717,7 @@ Phaser.Utils.extend(Phaser.Physics.P2.BodyDebug.prototype, { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 bf6dbd964..17c5fdc5b 100644 --- a/docs/src_physics_p2_CollisionGroup.js.html +++ b/docs/src_physics_p2_CollisionGroup.js.html @@ -1266,7 +1266,7 @@ Phaser.Physics.P2.CollisionGroup = function (bitmask) { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 42006047f..d646e515f 100644 --- a/docs/src_physics_p2_ContactMaterial.js.html +++ b/docs/src_physics_p2_ContactMaterial.js.html @@ -1308,7 +1308,7 @@ Phaser.Physics.P2.ContactMaterial.prototype.constructor = Phaser.Physics.P2.Cont Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 9feb22240..ff5192ee4 100644 --- a/docs/src_physics_p2_DistanceConstraint.js.html +++ b/docs/src_physics_p2_DistanceConstraint.js.html @@ -1294,7 +1294,7 @@ Phaser.Physics.P2.DistanceConstraint.prototype.constructor = Phaser.Physics.P2.D Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 de55c852e..926f44231 100644 --- a/docs/src_physics_p2_FixtureList.js.html +++ b/docs/src_physics_p2_FixtureList.js.html @@ -1476,7 +1476,7 @@ Phaser.Physics.P2.FixtureList.prototype = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 741e0f7e8..51df36761 100644 --- a/docs/src_physics_p2_GearConstraint.js.html +++ b/docs/src_physics_p2_GearConstraint.js.html @@ -1285,7 +1285,7 @@ Phaser.Physics.P2.GearConstraint.prototype.constructor = Phaser.Physics.P2.GearC Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 8cd091be1..d66a24c7e 100644 --- a/docs/src_physics_p2_InversePointProxy.js.html +++ b/docs/src_physics_p2_InversePointProxy.js.html @@ -1347,7 +1347,7 @@ Object.defineProperty(Phaser.Physics.P2.InversePointProxy.prototype, "my", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 947cbca90..5f0bbd72a 100644 --- a/docs/src_physics_p2_LockConstraint.js.html +++ b/docs/src_physics_p2_LockConstraint.js.html @@ -1289,7 +1289,7 @@ Phaser.Physics.P2.LockConstraint.prototype.constructor = Phaser.Physics.P2.LockC Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 ac9a287cd..683755569 100644 --- a/docs/src_physics_p2_Material.js.html +++ b/docs/src_physics_p2_Material.js.html @@ -1274,7 +1274,7 @@ Phaser.Physics.P2.Material.prototype.constructor = Phaser.Physics.P2.Material; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 396fec1a3..2df644968 100644 --- a/docs/src_physics_p2_PointProxy.js.html +++ b/docs/src_physics_p2_PointProxy.js.html @@ -1347,7 +1347,7 @@ Object.defineProperty(Phaser.Physics.P2.PointProxy.prototype, "my", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 2b65ebfd3..65bc658dd 100644 --- a/docs/src_physics_p2_PrismaticConstraint.js.html +++ b/docs/src_physics_p2_PrismaticConstraint.js.html @@ -1294,7 +1294,7 @@ Phaser.Physics.P2.PrismaticConstraint.prototype.constructor = Phaser.Physics.P2. Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 236e1d9bf..09e7cf6af 100644 --- a/docs/src_physics_p2_RevoluteConstraint.js.html +++ b/docs/src_physics_p2_RevoluteConstraint.js.html @@ -1296,7 +1296,7 @@ Phaser.Physics.P2.RevoluteConstraint.prototype.constructor = Phaser.Physics.P2.R Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 e820816ed..4be9189c6 100644 --- a/docs/src_physics_p2_RotationalSpring.js.html +++ b/docs/src_physics_p2_RotationalSpring.js.html @@ -1300,7 +1300,7 @@ Phaser.Physics.P2.Spring.prototype.constructor = Phaser.Physics.P2.Spring; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 d91f4d886..edcd5214a 100644 --- a/docs/src_physics_p2_Spring.js.html +++ b/docs/src_physics_p2_Spring.js.html @@ -1321,7 +1321,7 @@ Phaser.Physics.P2.Spring.prototype.constructor = Phaser.Physics.P2.Spring; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 0508da6b2..b9c874976 100644 --- a/docs/src_physics_p2_World.js.html +++ b/docs/src_physics_p2_World.js.html @@ -3294,7 +3294,7 @@ Object.defineProperty(Phaser.Physics.P2.prototype, "total", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 304225697..842799f2b 100644 --- a/docs/src_pixi_Pixi.js.html +++ b/docs/src_pixi_Pixi.js.html @@ -1363,7 +1363,7 @@ PIXI.defaultRenderOptions = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 c7eb0691f..956356c7e 100644 --- a/docs/src_pixi_display_DisplayObject.js.html +++ b/docs/src_pixi_display_DisplayObject.js.html @@ -2069,7 +2069,7 @@ Object.defineProperties(PIXI.DisplayObject.prototype, { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 32e02a775..024152092 100644 --- a/docs/src_pixi_display_DisplayObjectContainer.js.html +++ b/docs/src_pixi_display_DisplayObjectContainer.js.html @@ -1778,7 +1778,7 @@ PIXI.DisplayObjectContainer.prototype._renderCanvas = function(renderSession) Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 5f87349fb..11375f5f6 100644 --- a/docs/src_pixi_display_Sprite.js.html +++ b/docs/src_pixi_display_Sprite.js.html @@ -1738,7 +1738,7 @@ PIXI.Sprite.prototype._renderCanvas = function(renderSession, matrix) Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 ca111b9a6..62f1681e0 100644 --- a/docs/src_pixi_display_SpriteBatch.js.html +++ b/docs/src_pixi_display_SpriteBatch.js.html @@ -1425,7 +1425,7 @@ PIXI.SpriteBatch.prototype._renderCanvas = function(renderSession) Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 7093837ca..c63efe73a 100644 --- a/docs/src_pixi_extras_Rope.js.html +++ b/docs/src_pixi_extras_Rope.js.html @@ -1419,7 +1419,7 @@ PIXI.Rope.prototype.setTexture = function(texture) Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 b29523ef4..5ced060c7 100644 --- a/docs/src_pixi_extras_Strip.js.html +++ b/docs/src_pixi_extras_Strip.js.html @@ -1717,7 +1717,7 @@ PIXI.Strip.DrawModes = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 e7bc408c9..144ef79dc 100644 --- a/docs/src_pixi_extras_TilingSprite.js.html +++ b/docs/src_pixi_extras_TilingSprite.js.html @@ -1796,7 +1796,7 @@ Object.defineProperty(PIXI.TilingSprite.prototype, 'height', { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 1a621786e..1b4d11990 100644 --- a/docs/src_pixi_filters_AbstractFilter.js.html +++ b/docs/src_pixi_filters_AbstractFilter.js.html @@ -1317,7 +1317,7 @@ PIXI.AbstractFilter.prototype.syncUniforms = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 bf99f6f3e..ea2cee8d6 100644 --- a/docs/src_pixi_primitives_Graphics.js.html +++ b/docs/src_pixi_primitives_Graphics.js.html @@ -2471,7 +2471,7 @@ Object.defineProperty(PIXI.Graphics.prototype, "cacheAsBitmap", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 9e0fb6bfa..ee56f5500 100644 --- a/docs/src_pixi_primitives_GraphicsData.js.html +++ b/docs/src_pixi_primitives_GraphicsData.js.html @@ -1354,7 +1354,7 @@ PIXI.GraphicsData.prototype.clone = function() { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 238844021..8dde8dfb5 100644 --- a/docs/src_pixi_renderers_canvas_CanvasGraphics.js.html +++ b/docs/src_pixi_renderers_canvas_CanvasGraphics.js.html @@ -1577,7 +1577,7 @@ PIXI.CanvasGraphics.updateGraphicsTint = function(graphics) Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 6d6c36842..8154004c7 100644 --- a/docs/src_pixi_renderers_canvas_CanvasRenderer.js.html +++ b/docs/src_pixi_renderers_canvas_CanvasRenderer.js.html @@ -1540,7 +1540,7 @@ PIXI.CanvasRenderer.prototype.mapBlendModes = function () { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 1871ae504..1fc674805 100644 --- a/docs/src_pixi_renderers_canvas_utils_CanvasBuffer.js.html +++ b/docs/src_pixi_renderers_canvas_utils_CanvasBuffer.js.html @@ -1331,7 +1331,7 @@ PIXI.CanvasBuffer.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 4a543102f..f5d89352b 100644 --- a/docs/src_pixi_renderers_canvas_utils_CanvasMaskManager.js.html +++ b/docs/src_pixi_renderers_canvas_utils_CanvasMaskManager.js.html @@ -1303,7 +1303,7 @@ PIXI.CanvasMaskManager.prototype.popMask = function(renderSession) Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 7e66efd3a..be8d2b8fd 100644 --- a/docs/src_pixi_renderers_canvas_utils_CanvasTinter.js.html +++ b/docs/src_pixi_renderers_canvas_utils_CanvasTinter.js.html @@ -1416,7 +1416,7 @@ PIXI.CanvasTinter.tintMethod = PIXI.CanvasTinter.canUseMultiply ? PIXI.CanvasTin Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 1f066eb0d..c78ce5e21 100644 --- a/docs/src_pixi_renderers_webgl_WebGLRenderer.js.html +++ b/docs/src_pixi_renderers_webgl_WebGLRenderer.js.html @@ -1711,7 +1711,7 @@ PIXI.WebGLRenderer.glContextId = 0; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 e6d027813..cd3ac55b4 100644 --- a/docs/src_pixi_renderers_webgl_shaders_ComplexPrimitiveShader.js.html +++ b/docs/src_pixi_renderers_webgl_shaders_ComplexPrimitiveShader.js.html @@ -1367,7 +1367,7 @@ PIXI.ComplexPrimitiveShader.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 b27891d2d..3fb0e42ae 100644 --- a/docs/src_pixi_renderers_webgl_shaders_PixiFastShader.js.html +++ b/docs/src_pixi_renderers_webgl_shaders_PixiFastShader.js.html @@ -1400,7 +1400,7 @@ PIXI.PixiFastShader.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 bbf39f74e..80817032c 100644 --- a/docs/src_pixi_renderers_webgl_shaders_PixiShader.js.html +++ b/docs/src_pixi_renderers_webgl_shaders_PixiShader.js.html @@ -1633,7 +1633,7 @@ PIXI.PixiShader.defaultVertexSrc = [ Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 f167d0f71..a50bdbdb5 100644 --- a/docs/src_pixi_renderers_webgl_shaders_PrimitiveShader.js.html +++ b/docs/src_pixi_renderers_webgl_shaders_PrimitiveShader.js.html @@ -1362,7 +1362,7 @@ PIXI.PrimitiveShader.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 614f5c316..2148efc28 100644 --- a/docs/src_pixi_renderers_webgl_shaders_StripShader.js.html +++ b/docs/src_pixi_renderers_webgl_shaders_StripShader.js.html @@ -1368,7 +1368,7 @@ PIXI.StripShader.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 f8927abf5..cae086703 100644 --- a/docs/src_pixi_renderers_webgl_utils_FilterTexture.js.html +++ b/docs/src_pixi_renderers_webgl_utils_FilterTexture.js.html @@ -1355,7 +1355,7 @@ PIXI.FilterTexture.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 7060ea03a..616f0c813 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLBlendModeManager.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLBlendModeManager.js.html @@ -1307,7 +1307,7 @@ PIXI.WebGLBlendModeManager.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 41e87bf59..94fdbd9be 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLFastSpriteBatch.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLFastSpriteBatch.js.html @@ -1673,7 +1673,7 @@ PIXI.WebGLFastSpriteBatch.prototype.start = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 675443d9e..97470bec4 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLFilterManager.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLFilterManager.js.html @@ -1716,7 +1716,7 @@ PIXI.WebGLFilterManager.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 8f96e0684..2b94ecb0b 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLGraphics.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLGraphics.js.html @@ -2147,7 +2147,7 @@ PIXI.WebGLGraphicsData.prototype.upload = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 7414a4fc9..d44c58af4 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLMaskManager.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLMaskManager.js.html @@ -1324,7 +1324,7 @@ PIXI.WebGLMaskManager.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 73ebbd876..e97e46964 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLShaderManager.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLShaderManager.js.html @@ -1403,7 +1403,7 @@ PIXI.WebGLShaderManager.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 bbe8158f6..051cd4d26 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLShaderUtils.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLShaderUtils.js.html @@ -1340,7 +1340,7 @@ PIXI.compileProgram = function(gl, vertexSrc, fragmentSrc) Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 035dc36d3..c3b5dfb6b 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLSpriteBatch.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLSpriteBatch.js.html @@ -1924,7 +1924,7 @@ PIXI.WebGLSpriteBatch.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 fdca62902..b6db9601e 100644 --- a/docs/src_pixi_renderers_webgl_utils_WebGLStencilManager.js.html +++ b/docs/src_pixi_renderers_webgl_utils_WebGLStencilManager.js.html @@ -1542,7 +1542,7 @@ PIXI.WebGLStencilManager.prototype.destroy = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 3fec889f7..23e43203d 100644 --- a/docs/src_pixi_textures_BaseTexture.js.html +++ b/docs/src_pixi_textures_BaseTexture.js.html @@ -1491,7 +1491,7 @@ PIXI.BaseTexture.fromCanvas = function(canvas, scaleMode) Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 6ed6602f5..e9896af51 100644 --- a/docs/src_pixi_textures_RenderTexture.js.html +++ b/docs/src_pixi_textures_RenderTexture.js.html @@ -1597,7 +1597,7 @@ PIXI.RenderTexture.prototype.getCanvas = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 12f450bab..a2eb200f9 100644 --- a/docs/src_pixi_textures_Texture.js.html +++ b/docs/src_pixi_textures_Texture.js.html @@ -1523,7 +1523,7 @@ PIXI.TextureUvs = function() Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 2434a225e..c0e0f91c9 100644 --- a/docs/src_pixi_utils_CanvasPool.js.html +++ b/docs/src_pixi_utils_CanvasPool.js.html @@ -1429,7 +1429,7 @@ PIXI.CanvasPool.pool = []; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 aa92e38a8..b5cf0b7d9 100644 --- a/docs/src_pixi_utils_EarCut.js.html +++ b/docs/src_pixi_utils_EarCut.js.html @@ -1869,7 +1869,7 @@ PIXI.EarCut.Node = function (i, x, y) { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 8c89866c4..00f328de9 100644 --- a/docs/src_pixi_utils_EventTarget.js.html +++ b/docs/src_pixi_utils_EventTarget.js.html @@ -1529,7 +1529,7 @@ PIXI.Event.prototype.stopImmediatePropagation = function stopImmediatePropagatio Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 19f27248e..67c1bcd08 100644 --- a/docs/src_pixi_utils_Polyk.js.html +++ b/docs/src_pixi_utils_Polyk.js.html @@ -1413,7 +1413,7 @@ PIXI.PolyK._convex = function(ax, ay, bx, by, cx, cy, sign) Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 0f96b6376..62c0b153e 100644 --- a/docs/src_pixi_utils_Utils.js.html +++ b/docs/src_pixi_utils_Utils.js.html @@ -1339,7 +1339,7 @@ PIXI.isPowerOfTwo = function(width, height) Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 7741fc421..698bba121 100644 --- a/docs/src_plugins_weapon_Bullet.js.html +++ b/docs/src_plugins_weapon_Bullet.js.html @@ -1346,7 +1346,7 @@ Phaser.Bullet.prototype.update = function () { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 22bbfda44..e78a0f7e4 100644 --- a/docs/src_plugins_weapon_WeaponPlugin.js.html +++ b/docs/src_plugins_weapon_WeaponPlugin.js.html @@ -2470,7 +2470,7 @@ Object.defineProperty(Phaser.Weapon.prototype, "y", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 559beeb9d..63b0f7853 100644 --- a/docs/src_sound_AudioSprite.js.html +++ b/docs/src_sound_AudioSprite.js.html @@ -1375,7 +1375,7 @@ Phaser.AudioSprite.prototype.constructor = Phaser.AudioSprite; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 db01d31a9..1ffb51cf7 100644 --- a/docs/src_sound_Sound.js.html +++ b/docs/src_sound_Sound.js.html @@ -2436,7 +2436,7 @@ Object.defineProperty(Phaser.Sound.prototype, "volume", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 ebdde9fb1..a6d2d2c60 100644 --- a/docs/src_sound_SoundManager.js.html +++ b/docs/src_sound_SoundManager.js.html @@ -2098,7 +2098,7 @@ Object.defineProperty(Phaser.SoundManager.prototype, "volume", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 9684e5ed3..f2dbd22d8 100644 --- a/docs/src_system_Canvas.js.html +++ b/docs/src_system_Canvas.js.html @@ -1545,7 +1545,7 @@ Phaser.Canvas = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 84b594f2b..732163ffb 100644 --- a/docs/src_system_DOM.js.html +++ b/docs/src_system_DOM.js.html @@ -1677,7 +1677,7 @@ Phaser.Device.whenReady(function (device) { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 ddd129bc6..51b3cf6b1 100644 --- a/docs/src_system_Device.js.html +++ b/docs/src_system_Device.js.html @@ -2621,7 +2621,7 @@ Phaser.Device.isAndroidStockBrowser = function () { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 c7c0e89cb..5eb113a2e 100644 --- a/docs/src_system_RequestAnimationFrame.js.html +++ b/docs/src_system_RequestAnimationFrame.js.html @@ -1418,7 +1418,7 @@ Phaser.RequestAnimationFrame.prototype.constructor = Phaser.RequestAnimationFram Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 fcdb6252a..77c9b07b4 100644 --- a/docs/src_tilemap_ImageCollection.js.html +++ b/docs/src_tilemap_ImageCollection.js.html @@ -1375,7 +1375,7 @@ Phaser.ImageCollection.prototype.constructor = Phaser.ImageCollection; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 13614e5cb..c98c2350a 100644 --- a/docs/src_tilemap_Tile.js.html +++ b/docs/src_tilemap_Tile.js.html @@ -1652,7 +1652,7 @@ Object.defineProperty(Phaser.Tile.prototype, "bottom", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 13ae9f718..ae9436be9 100644 --- a/docs/src_tilemap_Tilemap.js.html +++ b/docs/src_tilemap_Tilemap.js.html @@ -3172,7 +3172,7 @@ Object.defineProperty(Phaser.Tilemap.prototype, "layer", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 4b1d5857d..8d878e689 100644 --- a/docs/src_tilemap_TilemapLayer.js.html +++ b/docs/src_tilemap_TilemapLayer.js.html @@ -2579,7 +2579,7 @@ Object.defineProperty(Phaser.TilemapLayer.prototype, "collisionHeight", { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 e7faebf3d..a16633bfd 100644 --- a/docs/src_tilemap_TilemapParser.js.html +++ b/docs/src_tilemap_TilemapParser.js.html @@ -1967,7 +1967,7 @@ Phaser.TilemapParser = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 dec5d0e19..269ee39d9 100644 --- a/docs/src_tilemap_Tileset.js.html +++ b/docs/src_tilemap_Tileset.js.html @@ -1505,7 +1505,7 @@ Phaser.Tileset.prototype.constructor = Phaser.Tileset; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 759a3982d..34edb9750 100644 --- a/docs/src_time_Time.js.html +++ b/docs/src_time_Time.js.html @@ -1873,7 +1873,7 @@ Phaser.Time.prototype.constructor = Phaser.Time; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 0287e21b5..05b736694 100644 --- a/docs/src_time_Timer.js.html +++ b/docs/src_time_Timer.js.html @@ -2001,7 +2001,7 @@ Phaser.Timer.prototype.constructor = Phaser.Timer; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 725e1122e..6d4e6a900 100644 --- a/docs/src_time_TimerEvent.js.html +++ b/docs/src_time_TimerEvent.js.html @@ -1325,7 +1325,7 @@ Phaser.TimerEvent.prototype.constructor = Phaser.TimerEvent; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 5ddab9c0b..ee3892152 100644 --- a/docs/src_tween_Easing.js.html +++ b/docs/src_tween_Easing.js.html @@ -1821,7 +1821,7 @@ Phaser.Easing.Power4 = Phaser.Easing.Quintic.Out; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 94bc9c2d0..d6948ec8a 100644 --- a/docs/src_tween_Tween.js.html +++ b/docs/src_tween_Tween.js.html @@ -2159,7 +2159,7 @@ Phaser.Tween.prototype.constructor = Phaser.Tween; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 1c758b815..9b8dc617e 100644 --- a/docs/src_tween_TweenData.js.html +++ b/docs/src_tween_TweenData.js.html @@ -1823,7 +1823,7 @@ Phaser.TweenData.prototype.constructor = Phaser.TweenData; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 a096aaea2..e20674e64 100644 --- a/docs/src_tween_TweenManager.js.html +++ b/docs/src_tween_TweenManager.js.html @@ -1605,7 +1605,7 @@ Phaser.TweenManager.prototype.constructor = Phaser.TweenManager; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 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 e051f894f..55d76ac74 100644 --- a/docs/src_utils_ArraySet.js.html +++ b/docs/src_utils_ArraySet.js.html @@ -1526,7 +1526,7 @@ Phaser.ArraySet.prototype.constructor = Phaser.ArraySet; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 fa3f96d31..150de8e1e 100644 --- a/docs/src_utils_ArrayUtils.js.html +++ b/docs/src_utils_ArrayUtils.js.html @@ -1587,7 +1587,7 @@ Phaser.ArrayUtils = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 31fdd5ccd..d7a54d08f 100644 --- a/docs/src_utils_Color.js.html +++ b/docs/src_utils_Color.js.html @@ -2601,7 +2601,7 @@ Phaser.Color = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 cb76155ee..fe64b0bca 100644 --- a/docs/src_utils_Debug.js.html +++ b/docs/src_utils_Debug.js.html @@ -2135,7 +2135,7 @@ Phaser.Utils.Debug.prototype.constructor = Phaser.Utils.Debug; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 decf14d35..5de45004a 100644 --- a/docs/src_utils_LinkedList.js.html +++ b/docs/src_utils_LinkedList.js.html @@ -1433,7 +1433,7 @@ Phaser.LinkedList.prototype.constructor = Phaser.LinkedList; Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:34 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:57 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 cfba8f369..fd0544a49 100644 --- a/docs/src_utils_Utils.js.html +++ b/docs/src_utils_Utils.js.html @@ -1684,7 +1684,7 @@ Phaser.Utils = { Documentation generated by JSDoc 3.3.3 - on Fri Jul 08 2016 15:42:35 GMT+0100 (GMT Daylight Time) using the DocStrap template. + on Mon Jul 11 2016 10:06:58 GMT+0100 (GMT Daylight Time) using the DocStrap template. diff --git a/src/Phaser.js b/src/Phaser.js index 9cc8a8dab..88c2fd8b0 100644 --- a/src/Phaser.js +++ b/src/Phaser.js @@ -15,7 +15,7 @@ var Phaser = Phaser || { * @constant * @type {string} */ - VERSION: '2.6.1 Beta', + VERSION: '2.6.1', /** * An array of Phaser game instances. diff --git a/src/physics/arcade/World.js b/src/physics/arcade/World.js index 35d37dbdb..3626f8025 100644 --- a/src/physics/arcade/World.js +++ b/src/physics/arcade/World.js @@ -819,7 +819,7 @@ Phaser.Physics.Arcade.prototype = { for (var i = 0; i < group.hash.length; i++) { - var bounds1; + var bounds1 = {}; var object1 = group.hash[i]; // Skip duff entries - we can't check a non-existent sprite or one with no body @@ -833,7 +833,7 @@ Phaser.Physics.Arcade.prototype = { for (var j = i + 1; j < group.hash.length; j++) { - var bounds2; + var bounds2 = {}; var object2 = group.hash[j]; // Skip duff entries - we can't check a non-existent sprite or one with no body diff --git a/typescript/phaser.comments.d.ts b/typescript/phaser.comments.d.ts index 2aec98664..355398d32 100644 --- a/typescript/phaser.comments.d.ts +++ b/typescript/phaser.comments.d.ts @@ -1,7 +1,7 @@ /// /// -// Type definitions for Phaser 2.6.0 - 7th July 2016 +// Type definitions for Phaser 2.6.1 - 11th July 2016 // Project: https://github.com/photonstorm/phaser declare module "phaser" { diff --git a/typescript/phaser.d.ts b/typescript/phaser.d.ts index c5a5ff865..9fcc90130 100644 --- a/typescript/phaser.d.ts +++ b/typescript/phaser.d.ts @@ -1,7 +1,7 @@ /// /// -// Type definitions for Phaser 2.6.0 - 7th July 2016 +// Type definitions for Phaser 2.6.1 - 11th July 2016 // Project: https://github.com/photonstorm/phaser declare module "phaser" {