excalibur 0.28.3 → 0.28.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +63 -63
- package/CHANGELOG.md +2003 -1955
- package/LICENSE.md +25 -25
- package/README.md +134 -134
- package/STYLEGUIDE.md +136 -136
- package/build/dist/Actions/Action/ActionSequence.js +31 -0
- package/build/dist/Actions/Action/ActionSequence.js.map +1 -0
- package/build/dist/Actions/Action/Blink.js +54 -0
- package/build/dist/Actions/Action/Blink.js.map +1 -0
- package/build/dist/Actions/Action/CallMethod.js +21 -0
- package/build/dist/Actions/Action/CallMethod.js.map +1 -0
- package/build/dist/Actions/Action/Delay.js +26 -0
- package/build/dist/Actions/Action/Delay.js.map +1 -0
- package/build/dist/Actions/Action/Die.js +22 -0
- package/build/dist/Actions/Action/Die.js.map +1 -0
- package/build/dist/Actions/Action/EaseBy.js +70 -0
- package/build/dist/Actions/Action/EaseBy.js.map +1 -0
- package/build/dist/Actions/Action/EaseTo.js +69 -0
- package/build/dist/Actions/Action/EaseTo.js.map +1 -0
- package/build/dist/Actions/Action/Fade.js +48 -0
- package/build/dist/Actions/Action/Fade.js.map +1 -0
- package/build/dist/Actions/Action/Follow.js +56 -0
- package/build/dist/Actions/Action/Follow.js.map +1 -0
- package/build/dist/Actions/Action/Meet.js +54 -0
- package/build/dist/Actions/Action/Meet.js.map +1 -0
- package/build/dist/Actions/Action/MoveBy.js +48 -0
- package/build/dist/Actions/Action/MoveBy.js.map +1 -0
- package/build/dist/Actions/Action/MoveTo.js +41 -0
- package/build/dist/Actions/Action/MoveTo.js.map +1 -0
- package/build/dist/Actions/Action/ParallelActions.js +23 -0
- package/build/dist/Actions/Action/ParallelActions.js.map +1 -0
- package/build/dist/Actions/Action/Repeat.js +31 -0
- package/build/dist/Actions/Action/Repeat.js.map +1 -0
- package/build/dist/Actions/Action/RepeatForever.js +37 -0
- package/build/dist/Actions/Action/RepeatForever.js.map +1 -0
- package/build/dist/Actions/Action/RotateBy.js +95 -0
- package/build/dist/Actions/Action/RotateBy.js.map +1 -0
- package/build/dist/Actions/Action/RotateTo.js +91 -0
- package/build/dist/Actions/Action/RotateTo.js.map +1 -0
- package/build/dist/Actions/Action/ScaleBy.js +46 -0
- package/build/dist/Actions/Action/ScaleBy.js.map +1 -0
- package/build/dist/Actions/Action/ScaleTo.js +58 -0
- package/build/dist/Actions/Action/ScaleTo.js.map +1 -0
- package/build/dist/Actions/Action.js +2 -0
- package/build/dist/Actions/Action.js.map +1 -0
- package/build/dist/Actions/ActionContext.js +322 -0
- package/build/dist/Actions/ActionContext.js.map +1 -0
- package/build/dist/Actions/ActionQueue.js +87 -0
- package/build/dist/Actions/ActionQueue.js.map +1 -0
- package/build/dist/Actions/Actionable.js +2 -0
- package/build/dist/Actions/Actionable.js.map +1 -0
- package/build/dist/Actions/ActionsComponent.js +195 -0
- package/build/dist/Actions/ActionsComponent.js.map +1 -0
- package/build/dist/Actions/ActionsSystem.js +30 -0
- package/build/dist/Actions/ActionsSystem.js.map +1 -0
- package/build/dist/Actions/Index.js +26 -0
- package/build/dist/Actions/Index.js.map +1 -0
- package/build/dist/Actions/RotationType.js +27 -0
- package/build/dist/Actions/RotationType.js.map +1 -0
- package/build/dist/Actor.js +629 -0
- package/build/dist/Actor.js.map +1 -0
- package/build/dist/Camera.js +660 -0
- package/build/dist/Camera.js.map +1 -0
- package/build/dist/Collision/BoundingBox.js +415 -0
- package/build/dist/Collision/BoundingBox.js.map +1 -0
- package/build/dist/Collision/ColliderComponent.js +202 -0
- package/build/dist/Collision/ColliderComponent.js.map +1 -0
- package/build/dist/Collision/Colliders/CircleCollider.js +226 -0
- package/build/dist/Collision/Colliders/CircleCollider.js.map +1 -0
- package/build/dist/Collision/Colliders/ClosestLineJumpTable.js +211 -0
- package/build/dist/Collision/Colliders/ClosestLineJumpTable.js.map +1 -0
- package/build/dist/Collision/Colliders/Collider.js +32 -0
- package/build/dist/Collision/Colliders/Collider.js.map +1 -0
- package/build/dist/Collision/Colliders/CollisionJumpTable.js +300 -0
- package/build/dist/Collision/Colliders/CollisionJumpTable.js.map +1 -0
- package/build/dist/Collision/Colliders/EdgeCollider.js +229 -0
- package/build/dist/Collision/Colliders/EdgeCollider.js.map +1 -0
- package/build/dist/Collision/Colliders/PolygonCollider.js +556 -0
- package/build/dist/Collision/Colliders/PolygonCollider.js.map +1 -0
- package/build/dist/Collision/Colliders/SeparatingAxis.js +67 -0
- package/build/dist/Collision/Colliders/SeparatingAxis.js.map +1 -0
- package/build/dist/Collision/Colliders/Shape.js +99 -0
- package/build/dist/Collision/Colliders/Shape.js.map +1 -0
- package/build/dist/Collision/CollisionType.js +33 -0
- package/build/dist/Collision/CollisionType.js.map +1 -0
- package/build/dist/Collision/Detection/CollisionContact.js +51 -0
- package/build/dist/Collision/Detection/CollisionContact.js.map +1 -0
- package/build/dist/Collision/Detection/CollisionProcessor.js +2 -0
- package/build/dist/Collision/Detection/CollisionProcessor.js.map +1 -0
- package/build/dist/Collision/Detection/DynamicTree.js +442 -0
- package/build/dist/Collision/Detection/DynamicTree.js.map +1 -0
- package/build/dist/Collision/Detection/Pair.js +92 -0
- package/build/dist/Collision/Detection/Pair.js.map +1 -0
- package/build/dist/Collision/Detection/QuadTree.js +193 -0
- package/build/dist/Collision/Detection/QuadTree.js.map +1 -0
- package/build/dist/Collision/Group/CollisionGroup.js +3 -3
- package/build/dist/Collision/Integrator.js +25 -0
- package/build/dist/Collision/Integrator.js.map +1 -0
- package/build/dist/Collision/MotionSystem.js +35 -0
- package/build/dist/Collision/MotionSystem.js.map +1 -0
- package/build/dist/Collision/Physics.js +163 -0
- package/build/dist/Collision/Physics.js.map +1 -0
- package/build/dist/Collision/PhysicsWorld.js +10 -0
- package/build/dist/Collision/PhysicsWorld.js.map +1 -0
- package/build/dist/Collision/Side.js +51 -0
- package/build/dist/Collision/Side.js.map +1 -0
- package/build/dist/Collision/Solver/ArcadeSolver.js +154 -0
- package/build/dist/Collision/Solver/ArcadeSolver.js.map +1 -0
- package/build/dist/Collision/Solver/ContactConstraintPoint.js +87 -0
- package/build/dist/Collision/Solver/ContactConstraintPoint.js.map +1 -0
- package/build/dist/Collision/Solver/RealisticSolver.js +293 -0
- package/build/dist/Collision/Solver/RealisticSolver.js.map +1 -0
- package/build/dist/Collision/Solver/Solver.js +2 -0
- package/build/dist/Collision/Solver/Solver.js.map +1 -0
- package/build/dist/Color.js +417 -0
- package/build/dist/Color.js.map +1 -0
- package/build/dist/Configurable.js +32 -0
- package/build/dist/Configurable.js.map +1 -0
- package/build/dist/Debug/Debug.d.ts +11 -0
- package/build/dist/Debug/Debug.js +385 -0
- package/build/dist/Debug/Debug.js.map +1 -0
- package/build/dist/Debug/DebugFlags.js +40 -0
- package/build/dist/Debug/DebugFlags.js.map +1 -0
- package/build/dist/Debug/DebugSystem.js +263 -0
- package/build/dist/Debug/DebugSystem.js.map +1 -0
- package/build/dist/Debug/index.js +4 -0
- package/build/dist/Debug/index.js.map +1 -0
- package/build/dist/Deprecated.js +2 -0
- package/build/dist/Deprecated.js.map +1 -0
- package/build/dist/Engine.js +986 -0
- package/build/dist/Engine.js.map +1 -0
- package/build/dist/EntityComponentSystem/Component.js +65 -0
- package/build/dist/EntityComponentSystem/Component.js.map +1 -0
- package/build/dist/EntityComponentSystem/Components/MotionComponent.js +33 -0
- package/build/dist/EntityComponentSystem/Components/MotionComponent.js.map +1 -0
- package/build/dist/EntityComponentSystem/Components/TransformComponent.js +107 -0
- package/build/dist/EntityComponentSystem/Components/TransformComponent.js.map +1 -0
- package/build/dist/EntityComponentSystem/Entity.js +487 -0
- package/build/dist/EntityComponentSystem/Entity.js.map +1 -0
- package/build/dist/EntityComponentSystem/EntityManager.js +137 -0
- package/build/dist/EntityComponentSystem/EntityManager.js.map +1 -0
- package/build/dist/EntityComponentSystem/Query.js +90 -0
- package/build/dist/EntityComponentSystem/Query.js.map +1 -0
- package/build/dist/EntityComponentSystem/QueryManager.js +90 -0
- package/build/dist/EntityComponentSystem/QueryManager.js.map +1 -0
- package/build/dist/EntityComponentSystem/System.js +76 -0
- package/build/dist/EntityComponentSystem/System.js.map +1 -0
- package/build/dist/EntityComponentSystem/SystemManager.js +104 -0
- package/build/dist/EntityComponentSystem/SystemManager.js.map +1 -0
- package/build/dist/EntityComponentSystem/Util.js +5 -0
- package/build/dist/EntityComponentSystem/Util.js.map +1 -0
- package/build/dist/EntityComponentSystem/World.js +55 -0
- package/build/dist/EntityComponentSystem/World.js.map +1 -0
- package/build/dist/EntityComponentSystem/index.js +11 -0
- package/build/dist/EntityComponentSystem/index.js.map +1 -0
- package/build/dist/EventDispatcher.js +122 -0
- package/build/dist/EventDispatcher.js.map +1 -0
- package/build/dist/EventEmitter.js +86 -0
- package/build/dist/EventEmitter.js.map +1 -0
- package/build/dist/Events/ExEvent.js +12 -0
- package/build/dist/Events/ExEvent.js.map +1 -0
- package/build/dist/Events/MediaEvents.js +75 -0
- package/build/dist/Events/MediaEvents.js.map +1 -0
- package/build/dist/Events/PointerEvents.js +52 -0
- package/build/dist/Events/PointerEvents.js.map +1 -0
- package/build/dist/Events.js +473 -0
- package/build/dist/Events.js.map +1 -0
- package/build/dist/Flags.js +67 -0
- package/build/dist/Flags.js.map +1 -0
- package/build/dist/Graphics/Animation.js +344 -0
- package/build/dist/Graphics/Animation.js.map +1 -0
- package/build/dist/Graphics/Canvas.js +38 -0
- package/build/dist/Graphics/Canvas.js.map +1 -0
- package/build/dist/Graphics/Circle.js +48 -0
- package/build/dist/Graphics/Circle.js.map +1 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContext.js +2 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContext.js.map +1 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContext2DCanvas.js +237 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContext2DCanvas.js.map +1 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContextWebGL.d.ts +1 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContextWebGL.js +481 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContextWebGL.js.map +1 -0
- package/build/dist/Graphics/Context/circle-renderer/circle-renderer.frag.glsl +52 -52
- package/build/dist/Graphics/Context/circle-renderer/circle-renderer.js +174 -0
- package/build/dist/Graphics/Context/circle-renderer/circle-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/circle-renderer/circle-renderer.vert.glsl +37 -37
- package/build/dist/Graphics/Context/debug-text.js +47 -0
- package/build/dist/Graphics/Context/debug-text.js.map +1 -0
- package/build/dist/Graphics/Context/draw-call.js +16 -0
- package/build/dist/Graphics/Context/draw-call.js.map +1 -0
- package/build/dist/Graphics/Context/image-renderer/image-renderer.frag.glsl +32 -32
- package/build/dist/Graphics/Context/image-renderer/image-renderer.js +246 -0
- package/build/dist/Graphics/Context/image-renderer/image-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/image-renderer/image-renderer.vert.glsl +32 -32
- package/build/dist/Graphics/Context/line-renderer/line-fragment.glsl +10 -10
- package/build/dist/Graphics/Context/line-renderer/line-renderer.js +90 -0
- package/build/dist/Graphics/Context/line-renderer/line-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/line-renderer/line-vertex.glsl +14 -14
- package/build/dist/Graphics/Context/material-renderer/material-renderer.js +23 -2
- package/build/dist/Graphics/Context/material-renderer/material-renderer.js.map +1 -1
- package/build/dist/Graphics/Context/material.d.ts +2 -0
- package/build/dist/Graphics/Context/material.js +72 -0
- package/build/dist/Graphics/Context/material.js.map +1 -0
- package/build/dist/Graphics/Context/point-renderer/point-fragment.glsl +19 -19
- package/build/dist/Graphics/Context/point-renderer/point-renderer.js +91 -0
- package/build/dist/Graphics/Context/point-renderer/point-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/point-renderer/point-vertex.glsl +11 -11
- package/build/dist/Graphics/Context/quad-index-buffer.js +67 -0
- package/build/dist/Graphics/Context/quad-index-buffer.js.map +1 -0
- package/build/dist/Graphics/Context/rectangle-renderer/rectangle-renderer.frag.glsl +85 -85
- package/build/dist/Graphics/Context/rectangle-renderer/rectangle-renderer.js +305 -0
- package/build/dist/Graphics/Context/rectangle-renderer/rectangle-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/rectangle-renderer/rectangle-renderer.vert.glsl +42 -42
- package/build/dist/Graphics/Context/render-source.js +16 -0
- package/build/dist/Graphics/Context/render-source.js.map +1 -0
- package/build/dist/Graphics/Context/render-target.js +65 -0
- package/build/dist/Graphics/Context/render-target.js.map +1 -0
- package/build/dist/Graphics/Context/renderer.js +2 -0
- package/build/dist/Graphics/Context/renderer.js.map +1 -0
- package/build/dist/Graphics/Context/screen-pass-painter/screen-fragment.glsl +13 -13
- package/build/dist/Graphics/Context/screen-pass-painter/screen-pass-painter.js +56 -0
- package/build/dist/Graphics/Context/screen-pass-painter/screen-pass-painter.js.map +1 -0
- package/build/dist/Graphics/Context/screen-pass-painter/screen-vertex.glsl +11 -11
- package/build/dist/Graphics/Context/state-stack.js +37 -0
- package/build/dist/Graphics/Context/state-stack.js.map +1 -0
- package/build/dist/Graphics/Context/texture-loader.js +109 -0
- package/build/dist/Graphics/Context/texture-loader.js.map +1 -0
- package/build/dist/Graphics/Context/transform-stack.js +30 -0
- package/build/dist/Graphics/Context/transform-stack.js.map +1 -0
- package/build/dist/Graphics/Context/vertex-buffer.js +53 -0
- package/build/dist/Graphics/Context/vertex-buffer.js.map +1 -0
- package/build/dist/Graphics/Context/webgl-util.js +79 -0
- package/build/dist/Graphics/Context/webgl-util.js.map +1 -0
- package/build/dist/Graphics/DebugGraphicsComponent.d.ts +3 -2
- package/build/dist/Graphics/DebugGraphicsComponent.js +16 -0
- package/build/dist/Graphics/DebugGraphicsComponent.js.map +1 -0
- package/build/dist/Graphics/Filtering.js +17 -0
- package/build/dist/Graphics/Filtering.js.map +1 -0
- package/build/dist/Graphics/Font.js +148 -0
- package/build/dist/Graphics/Font.js.map +1 -0
- package/build/dist/Graphics/FontCache.d.ts +1 -0
- package/build/dist/Graphics/FontCache.js +80 -0
- package/build/dist/Graphics/FontCache.js.map +1 -0
- package/build/dist/Graphics/FontCommon.js +109 -0
- package/build/dist/Graphics/FontCommon.js.map +1 -0
- package/build/dist/Graphics/FontTextInstance.js +230 -0
- package/build/dist/Graphics/FontTextInstance.js.map +1 -0
- package/build/dist/Graphics/Graphic.js +208 -0
- package/build/dist/Graphics/Graphic.js.map +1 -0
- package/build/dist/Graphics/GraphicsComponent.js +336 -0
- package/build/dist/Graphics/GraphicsComponent.js.map +1 -0
- package/build/dist/Graphics/GraphicsDiagnostics.js +9 -0
- package/build/dist/Graphics/GraphicsDiagnostics.js.map +1 -0
- package/build/dist/Graphics/GraphicsGroup.js +69 -0
- package/build/dist/Graphics/GraphicsGroup.js.map +1 -0
- package/build/dist/Graphics/GraphicsSystem.js +210 -0
- package/build/dist/Graphics/GraphicsSystem.js.map +1 -0
- package/build/dist/Graphics/ImageSource.js +124 -0
- package/build/dist/Graphics/ImageSource.js.map +1 -0
- package/build/dist/Graphics/Line.js +45 -0
- package/build/dist/Graphics/Line.js.map +1 -0
- package/build/dist/Graphics/OffscreenSystem.js +64 -0
- package/build/dist/Graphics/OffscreenSystem.js.map +1 -0
- package/build/dist/Graphics/ParallaxComponent.js +11 -0
- package/build/dist/Graphics/ParallaxComponent.js.map +1 -0
- package/build/dist/Graphics/Polygon.js +59 -0
- package/build/dist/Graphics/Polygon.js.map +1 -0
- package/build/dist/Graphics/PostProcessor/ColorBlindnessMode.js +7 -0
- package/build/dist/Graphics/PostProcessor/ColorBlindnessMode.js.map +1 -0
- package/build/dist/Graphics/PostProcessor/ColorBlindnessPostProcessor.js +52 -0
- package/build/dist/Graphics/PostProcessor/ColorBlindnessPostProcessor.js.map +1 -0
- package/build/dist/Graphics/PostProcessor/PostProcessor.js +2 -0
- package/build/dist/Graphics/PostProcessor/PostProcessor.js.map +1 -0
- package/build/dist/Graphics/PostProcessor/ScreenShader.js +59 -0
- package/build/dist/Graphics/PostProcessor/ScreenShader.js.map +1 -0
- package/build/dist/Graphics/PostProcessor/color-blind-fragment.glsl +64 -64
- package/build/dist/Graphics/Raster.js +215 -0
- package/build/dist/Graphics/Raster.js.map +1 -0
- package/build/dist/Graphics/Rectangle.js +29 -0
- package/build/dist/Graphics/Rectangle.js.map +1 -0
- package/build/dist/Graphics/Sprite.js +82 -0
- package/build/dist/Graphics/Sprite.js.map +1 -0
- package/build/dist/Graphics/SpriteFont.js +139 -0
- package/build/dist/Graphics/SpriteFont.js.map +1 -0
- package/build/dist/Graphics/SpriteSheet.js +116 -0
- package/build/dist/Graphics/SpriteSheet.js.map +1 -0
- package/build/dist/Graphics/Text.js +103 -0
- package/build/dist/Graphics/Text.js.map +1 -0
- package/build/dist/Graphics/index.js +46 -0
- package/build/dist/Graphics/index.js.map +1 -0
- package/build/dist/Id.js +8 -0
- package/build/dist/Id.js.map +1 -0
- package/build/dist/Input/CapturePointerConfig.js +5 -0
- package/build/dist/Input/CapturePointerConfig.js.map +1 -0
- package/build/dist/Input/EngineInput.js +2 -0
- package/build/dist/Input/EngineInput.js.map +1 -0
- package/build/dist/Input/Gamepad.js +422 -0
- package/build/dist/Input/Gamepad.js.map +1 -0
- package/build/dist/Input/Index.js +88 -0
- package/build/dist/Input/Index.js.map +1 -0
- package/build/dist/Input/InputMapper.js +45 -0
- package/build/dist/Input/InputMapper.js.map +1 -0
- package/build/dist/Input/Keyboard.js +348 -0
- package/build/dist/Input/Keyboard.js.map +1 -0
- package/build/dist/Input/NativePointerButton.js +12 -0
- package/build/dist/Input/NativePointerButton.js.map +1 -0
- package/build/dist/Input/PointerAbstraction.js +44 -0
- package/build/dist/Input/PointerAbstraction.js.map +1 -0
- package/build/dist/Input/PointerButton.js +12 -0
- package/build/dist/Input/PointerButton.js.map +1 -0
- package/build/dist/Input/PointerComponent.js +28 -0
- package/build/dist/Input/PointerComponent.js.map +1 -0
- package/build/dist/Input/PointerEvent.js +25 -0
- package/build/dist/Input/PointerEvent.js.map +1 -0
- package/build/dist/Input/PointerEventReceiver.js +456 -0
- package/build/dist/Input/PointerEventReceiver.js.map +1 -0
- package/build/dist/Input/PointerScope.js +16 -0
- package/build/dist/Input/PointerScope.js.map +1 -0
- package/build/dist/Input/PointerSystem.js +249 -0
- package/build/dist/Input/PointerSystem.js.map +1 -0
- package/build/dist/Input/PointerType.js +11 -0
- package/build/dist/Input/PointerType.js.map +1 -0
- package/build/dist/Input/WheelDeltaMode.js +7 -0
- package/build/dist/Input/WheelDeltaMode.js.map +1 -0
- package/build/dist/Input/WheelEvent.js +21 -0
- package/build/dist/Input/WheelEvent.js.map +1 -0
- package/build/dist/Interfaces/Audio.js +2 -0
- package/build/dist/Interfaces/Audio.js.map +1 -0
- package/build/dist/Interfaces/AudioImplementation.js +11 -0
- package/build/dist/Interfaces/AudioImplementation.js.map +1 -0
- package/build/dist/Interfaces/Clonable.js +2 -0
- package/build/dist/Interfaces/Clonable.js.map +1 -0
- package/build/dist/Interfaces/Evented.js +2 -0
- package/build/dist/Interfaces/Evented.js.map +1 -0
- package/build/dist/Interfaces/Index.js +8 -0
- package/build/dist/Interfaces/Index.js.map +1 -0
- package/build/dist/Interfaces/LifecycleEvents.js +51 -0
- package/build/dist/Interfaces/LifecycleEvents.js.map +1 -0
- package/build/dist/Interfaces/Loadable.js +2 -0
- package/build/dist/Interfaces/Loadable.js.map +1 -0
- package/build/dist/Interfaces/PointerEventHandlers.js +2 -0
- package/build/dist/Interfaces/PointerEventHandlers.js.map +1 -0
- package/build/dist/Label.js +81 -0
- package/build/dist/Label.js.map +1 -0
- package/build/dist/Loader.js +416 -0
- package/build/dist/Loader.js.map +1 -0
- package/build/dist/Math/Index.js +13 -0
- package/build/dist/Math/Index.js.map +1 -0
- package/build/dist/Math/Random.js +239 -0
- package/build/dist/Math/Random.js.map +1 -0
- package/build/dist/Math/affine-matrix.js +331 -0
- package/build/dist/Math/affine-matrix.js.map +1 -0
- package/build/dist/Math/coord-plane.js +17 -0
- package/build/dist/Math/coord-plane.js.map +1 -0
- package/build/dist/Math/global-coordinates.js +30 -0
- package/build/dist/Math/global-coordinates.js.map +1 -0
- package/build/dist/Math/line-segment.js +205 -0
- package/build/dist/Math/line-segment.js.map +1 -0
- package/build/dist/Math/matrix.js +457 -0
- package/build/dist/Math/matrix.js.map +1 -0
- package/build/dist/Math/projection.js +24 -0
- package/build/dist/Math/projection.js.map +1 -0
- package/build/dist/Math/ray.js +52 -0
- package/build/dist/Math/ray.js.map +1 -0
- package/build/dist/Math/transform.js +219 -0
- package/build/dist/Math/transform.js.map +1 -0
- package/build/dist/Math/util.js +82 -0
- package/build/dist/Math/util.js.map +1 -0
- package/build/dist/Math/vector-view.js +25 -0
- package/build/dist/Math/vector-view.js.map +1 -0
- package/build/dist/Math/vector.js +340 -0
- package/build/dist/Math/vector.js.map +1 -0
- package/build/dist/Math/watch-vector.js +26 -0
- package/build/dist/Math/watch-vector.js.map +1 -0
- package/build/dist/Particles.js +430 -0
- package/build/dist/Particles.js.map +1 -0
- package/build/dist/Polyfill.js +56 -0
- package/build/dist/Polyfill.js.map +1 -0
- package/build/dist/Resources/Gif.js +464 -0
- package/build/dist/Resources/Gif.js.map +1 -0
- package/build/dist/Resources/Index.js +4 -0
- package/build/dist/Resources/Index.js.map +1 -0
- package/build/dist/Resources/Resource.js +81 -0
- package/build/dist/Resources/Resource.js.map +1 -0
- package/build/dist/Resources/Sound/AudioContext.js +16 -0
- package/build/dist/Resources/Sound/AudioContext.js.map +1 -0
- package/build/dist/Resources/Sound/Index.js +4 -0
- package/build/dist/Resources/Sound/Index.js.map +1 -0
- package/build/dist/Resources/Sound/Sound.js +326 -0
- package/build/dist/Resources/Sound/Sound.js.map +1 -0
- package/build/dist/Resources/Sound/WebAudioInstance.js +190 -0
- package/build/dist/Resources/Sound/WebAudioInstance.js.map +1 -0
- package/build/dist/Scene.js +444 -0
- package/build/dist/Scene.js.map +1 -0
- package/build/dist/Screen.js +782 -0
- package/build/dist/Screen.js.map +1 -0
- package/build/dist/ScreenElement.js +43 -0
- package/build/dist/ScreenElement.js.map +1 -0
- package/build/dist/TileMap/IsometricEntityComponent.js +17 -0
- package/build/dist/TileMap/IsometricEntityComponent.js.map +1 -0
- package/build/dist/TileMap/IsometricEntitySystem.js +23 -0
- package/build/dist/TileMap/IsometricEntitySystem.js.map +1 -0
- package/build/dist/TileMap/IsometricMap.js +311 -0
- package/build/dist/TileMap/IsometricMap.js.map +1 -0
- package/build/dist/TileMap/TileMap.d.ts +2 -1
- package/build/dist/TileMap/TileMap.js +630 -0
- package/build/dist/TileMap/TileMap.js.map +1 -0
- package/build/dist/TileMap/index.js +5 -0
- package/build/dist/TileMap/index.js.map +1 -0
- package/build/dist/Timer.js +202 -0
- package/build/dist/Timer.js.map +1 -0
- package/build/dist/Trigger.js +94 -0
- package/build/dist/Trigger.js.map +1 -0
- package/build/dist/Util/Browser.js +66 -0
- package/build/dist/Util/Browser.js.map +1 -0
- package/build/dist/Util/Clock.js +219 -0
- package/build/dist/Util/Clock.js.map +1 -0
- package/build/dist/Util/Decorators.js +78 -0
- package/build/dist/Util/Decorators.js.map +1 -0
- package/build/dist/Util/Detector.js +167 -0
- package/build/dist/Util/Detector.js.map +1 -0
- package/build/dist/Util/DrawUtil.js +115 -0
- package/build/dist/Util/DrawUtil.js.map +1 -0
- package/build/dist/Util/EasingFunctions.js +102 -0
- package/build/dist/Util/EasingFunctions.js.map +1 -0
- package/build/dist/Util/Fps.js +47 -0
- package/build/dist/Util/Fps.js.map +1 -0
- package/build/dist/Util/Future.js +30 -0
- package/build/dist/Util/Future.js.map +1 -0
- package/build/dist/Util/IFrame.js +23 -0
- package/build/dist/Util/IFrame.js.map +1 -0
- package/build/dist/Util/Index.js +7 -0
- package/build/dist/Util/Index.js.map +1 -0
- package/build/dist/Util/Log.js +195 -0
- package/build/dist/Util/Log.js.map +1 -0
- package/build/dist/Util/Observable.js +66 -0
- package/build/dist/Util/Observable.js.map +1 -0
- package/build/dist/Util/Pool.js +74 -0
- package/build/dist/Util/Pool.js.map +1 -0
- package/build/dist/Util/Semaphore.js +55 -0
- package/build/dist/Util/Semaphore.js.map +1 -0
- package/build/dist/Util/Sound.js +22 -0
- package/build/dist/Util/Sound.js.map +1 -0
- package/build/dist/Util/StateMachine.js +79 -0
- package/build/dist/Util/StateMachine.js.map +1 -0
- package/build/dist/Util/Toaster.css +28 -28
- package/build/dist/Util/Toaster.js +84 -0
- package/build/dist/Util/Toaster.js.map +1 -0
- package/build/dist/Util/Util.d.ts +6 -0
- package/build/dist/Util/Util.js +95 -0
- package/build/dist/Util/Util.js.map +1 -0
- package/build/dist/Util/Watch.js +67 -0
- package/build/dist/Util/Watch.js.map +1 -0
- package/build/dist/Util/WebAudio.js +62 -0
- package/build/dist/Util/WebAudio.js.map +1 -0
- package/build/dist/excalibur.d.ts +2 -2
- package/build/dist/excalibur.js +389 -258
- package/build/dist/excalibur.js.map +1 -1
- package/build/dist/excalibur.min.js +1 -1
- package/build/dist/excalibur.min.js.LICENSE.txt +1 -1
- package/build/dist/excalibur.min.js.map +1 -1
- package/build/dist/index.js +81 -0
- package/build/dist/index.js.map +1 -0
- package/build/esm/Debug/Debug.d.ts +11 -0
- package/build/esm/Graphics/Context/ExcaliburGraphicsContextWebGL.d.ts +1 -0
- package/build/esm/Graphics/Context/material.d.ts +2 -0
- package/build/esm/Graphics/DebugGraphicsComponent.d.ts +3 -2
- package/build/esm/Graphics/FontCache.d.ts +1 -0
- package/build/esm/TileMap/TileMap.d.ts +2 -1
- package/build/esm/Util/Util.d.ts +6 -0
- package/build/esm/excalibur.d.ts +2 -2
- package/build/esm/excalibur.js +389 -258
- package/build/esm/excalibur.js.map +1 -1
- package/build/esm/excalibur.min.js +1 -1
- package/build/esm/excalibur.min.js.LICENSE.txt +1 -1
- package/build/esm/excalibur.min.js.map +1 -1
- package/docker-compose.yml +11 -11
- package/package.json +131 -131
- package/build/dist/Loader.css +0 -122
- package/build/nuget/Excalibur.0.28.3.nupkg +0 -0
- package/build/v0.28.3.zip +0 -0
- package/excalibur-0.28.3.tgz +0 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module
|
|
3
|
+
* Pseudo-Random Utility
|
|
4
|
+
*
|
|
5
|
+
* A pseudo-random utility to add seeded random support for help in
|
|
6
|
+
* generating things like terrain or reproducible randomness. Uses the
|
|
7
|
+
* [Mersenne Twister](https://en.wikipedia.org/wiki/Mersenne_Twister) algorithm.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* 32-bit mask
|
|
11
|
+
*/
|
|
12
|
+
const BITMASK32 = 0xffffffff;
|
|
13
|
+
/**
|
|
14
|
+
* Pseudo-random number generator following the Mersenne_Twister algorithm. Given a seed this generator will produce the same sequence
|
|
15
|
+
* of numbers each time it is called.
|
|
16
|
+
* See https://en.wikipedia.org/wiki/Mersenne_Twister for more details.
|
|
17
|
+
* Uses the MT19937-32 (2002) implementation documented here http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html
|
|
18
|
+
*
|
|
19
|
+
* Api inspired by http://chancejs.com/# https://github.com/chancejs/chancejs
|
|
20
|
+
*/
|
|
21
|
+
export class Random {
|
|
22
|
+
/**
|
|
23
|
+
* If no seed is specified, the Date.now() is used
|
|
24
|
+
*/
|
|
25
|
+
constructor(seed) {
|
|
26
|
+
this.seed = seed;
|
|
27
|
+
// Separation point of one one word, the number of bits in the lower bitmask 0 <= r <= w-1
|
|
28
|
+
this._lowerMask = 0x7fffffff; // 31 bits same as _r
|
|
29
|
+
this._upperMask = 0x80000000; // 34 high bits
|
|
30
|
+
// Word size, 64 bits
|
|
31
|
+
this._w = 32;
|
|
32
|
+
// Degree of recurrence
|
|
33
|
+
this._n = 624;
|
|
34
|
+
// Middle word, an offset used in the recurrence defining the series x, 1<=m<n
|
|
35
|
+
this._m = 397;
|
|
36
|
+
// coefficients of teh rational normal form twist matrix
|
|
37
|
+
this._a = 0x9908b0df;
|
|
38
|
+
// tempering bit shifts and masks
|
|
39
|
+
this._u = 11;
|
|
40
|
+
this._s = 7;
|
|
41
|
+
this._b = 0x9d2c5680;
|
|
42
|
+
this._t = 15;
|
|
43
|
+
this._c = 0xefc60000;
|
|
44
|
+
this._l = 18;
|
|
45
|
+
this._f = 1812433253;
|
|
46
|
+
this._mt = new Array(this._n);
|
|
47
|
+
// need to mask to support higher bit machines
|
|
48
|
+
this._mt[0] = (seed || Date.now()) >>> 0;
|
|
49
|
+
for (let i = 1; i < this._n; i++) {
|
|
50
|
+
const s = this._mt[i - 1] ^ (this._mt[i - 1] >>> (this._w - 2));
|
|
51
|
+
// numbers are bigger than the JS max safe int, add in 16-bit chunks to prevent IEEE rounding errors on high bits
|
|
52
|
+
this._mt[i] = (((this._f * ((s & 0xffff0000) >>> 16)) << 16) + this._f * (s & 0xffff) + i) >>> 0;
|
|
53
|
+
}
|
|
54
|
+
this._index = this._n;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Apply the twist
|
|
58
|
+
*/
|
|
59
|
+
_twist() {
|
|
60
|
+
const mag01 = [0x0, this._a];
|
|
61
|
+
let y = 0, i = 0;
|
|
62
|
+
for (; i < this._n - this._m; i++) {
|
|
63
|
+
y = (this._mt[i] & this._upperMask) | (this._mt[i + 1] & this._lowerMask);
|
|
64
|
+
this._mt[i] = this._mt[i + this._m] ^ (y >>> 1) ^ (mag01[y & 0x1] & BITMASK32);
|
|
65
|
+
}
|
|
66
|
+
for (; i < this._n - 1; i++) {
|
|
67
|
+
y = (this._mt[i] & this._upperMask) | (this._mt[i + 1] & this._lowerMask);
|
|
68
|
+
this._mt[i] = this._mt[i + (this._m - this._n)] ^ (y >>> 1) ^ (mag01[y & 0x1] & BITMASK32);
|
|
69
|
+
}
|
|
70
|
+
y = (this._mt[this._n - 1] & this._upperMask) | (this._mt[0] & this._lowerMask);
|
|
71
|
+
this._mt[this._n - 1] = this._mt[this._m - 1] ^ (y >>> 1) ^ (mag01[y & 0x1] & BITMASK32);
|
|
72
|
+
this._index = 0;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Return next 32 bit integer number in sequence
|
|
76
|
+
*/
|
|
77
|
+
nextInt() {
|
|
78
|
+
if (this._index >= this._n) {
|
|
79
|
+
this._twist();
|
|
80
|
+
}
|
|
81
|
+
let y = this._mt[this._index++];
|
|
82
|
+
y ^= y >>> this._u;
|
|
83
|
+
y ^= (y << this._s) & this._b;
|
|
84
|
+
y ^= (y << this._t) & this._c;
|
|
85
|
+
y ^= y >>> this._l;
|
|
86
|
+
return y >>> 0;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Return a random floating point number between [0, 1)
|
|
90
|
+
*/
|
|
91
|
+
next() {
|
|
92
|
+
return this.nextInt() * (1.0 / 4294967296.0); // divided by 2^32
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Return a random floating point in range [min, max) min is included, max is not included
|
|
96
|
+
*/
|
|
97
|
+
floating(min, max) {
|
|
98
|
+
return (max - min) * this.next() + min;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Return a random integer in range [min, max] min is included, max is included.
|
|
102
|
+
* Implemented with rejection sampling, see https://medium.com/@betable/tifu-by-using-math-random-f1c308c4fd9d#.i13tdiu5a
|
|
103
|
+
*/
|
|
104
|
+
integer(min, max) {
|
|
105
|
+
return Math.floor((max - min + 1) * this.next() + min);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Returns true or false randomly with 50/50 odds by default.
|
|
109
|
+
* By default the likelihood of returning a true is .5 (50%).
|
|
110
|
+
* @param likelihood takes values between [0, 1]
|
|
111
|
+
*/
|
|
112
|
+
bool(likelihood = 0.5) {
|
|
113
|
+
return this.next() <= likelihood;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Returns one element from an array at random
|
|
117
|
+
*/
|
|
118
|
+
pickOne(array) {
|
|
119
|
+
return array[this.integer(0, array.length - 1)];
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Returns a new array random picking elements from the original
|
|
123
|
+
* @param array Original array to pick from
|
|
124
|
+
* @param numPicks can be any positive number
|
|
125
|
+
* @param allowDuplicates indicates whether the returned set is allowed duplicates (it does not mean there will always be duplicates
|
|
126
|
+
* just that it is possible)
|
|
127
|
+
*/
|
|
128
|
+
pickSet(array, numPicks, allowDuplicates = false) {
|
|
129
|
+
if (allowDuplicates) {
|
|
130
|
+
return this._pickSetWithDuplicates(array, numPicks);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
return this._pickSetWithoutDuplicates(array, numPicks);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Returns a new array randomly picking elements in the original (not reused)
|
|
138
|
+
* @param array Array to pick elements out of
|
|
139
|
+
* @param numPicks must be less than or equal to the number of elements in the array.
|
|
140
|
+
*/
|
|
141
|
+
_pickSetWithoutDuplicates(array, numPicks) {
|
|
142
|
+
if (numPicks > array.length || numPicks < 0) {
|
|
143
|
+
throw new Error('Invalid number of elements to pick, must pick a value 0 < n <= length');
|
|
144
|
+
}
|
|
145
|
+
if (numPicks === array.length) {
|
|
146
|
+
return array;
|
|
147
|
+
}
|
|
148
|
+
const result = new Array(numPicks);
|
|
149
|
+
let currentPick = 0;
|
|
150
|
+
const tempArray = array.slice(0);
|
|
151
|
+
while (currentPick < numPicks) {
|
|
152
|
+
const index = this.integer(0, tempArray.length - 1);
|
|
153
|
+
result[currentPick++] = tempArray[index];
|
|
154
|
+
tempArray.splice(index, 1);
|
|
155
|
+
}
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Returns a new array random picking elements from the original allowing duplicates
|
|
160
|
+
* @param array Array to pick elements out of
|
|
161
|
+
* @param numPicks can be any positive number
|
|
162
|
+
*/
|
|
163
|
+
_pickSetWithDuplicates(array, numPicks) {
|
|
164
|
+
// Typescript numbers are all floating point, so do we add check for int? (or floor the input?)
|
|
165
|
+
if (numPicks < 0) {
|
|
166
|
+
throw new Error('Invalid number of elements to pick, must pick a value 0 <= n < MAX_INT');
|
|
167
|
+
}
|
|
168
|
+
const result = new Array(numPicks);
|
|
169
|
+
for (let i = 0; i < numPicks; i++) {
|
|
170
|
+
result[i] = this.pickOne(array);
|
|
171
|
+
}
|
|
172
|
+
return result;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Returns a new array that has its elements shuffled. Using the Fisher/Yates method
|
|
176
|
+
* https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle
|
|
177
|
+
*/
|
|
178
|
+
shuffle(array) {
|
|
179
|
+
const tempArray = array.slice(0);
|
|
180
|
+
let swap = null;
|
|
181
|
+
for (let i = 0; i < tempArray.length - 2; i++) {
|
|
182
|
+
const randomIndex = this.integer(i, tempArray.length - 1);
|
|
183
|
+
swap = tempArray[i];
|
|
184
|
+
tempArray[i] = tempArray[randomIndex];
|
|
185
|
+
tempArray[randomIndex] = swap;
|
|
186
|
+
}
|
|
187
|
+
return tempArray;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Generate a list of random integer numbers
|
|
191
|
+
* @param length the length of the final array
|
|
192
|
+
* @param min the minimum integer number to generate inclusive
|
|
193
|
+
* @param max the maximum integer number to generate inclusive
|
|
194
|
+
*/
|
|
195
|
+
range(length, min, max) {
|
|
196
|
+
const result = new Array(length);
|
|
197
|
+
for (let i = 0; i < length; i++) {
|
|
198
|
+
result[i] = this.integer(min, max);
|
|
199
|
+
}
|
|
200
|
+
return result;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Returns the result of a d4 dice roll
|
|
204
|
+
*/
|
|
205
|
+
d4() {
|
|
206
|
+
return this.integer(1, 4);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Returns the result of a d6 dice roll
|
|
210
|
+
*/
|
|
211
|
+
d6() {
|
|
212
|
+
return this.integer(1, 6);
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Returns the result of a d8 dice roll
|
|
216
|
+
*/
|
|
217
|
+
d8() {
|
|
218
|
+
return this.integer(1, 8);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Returns the result of a d10 dice roll
|
|
222
|
+
*/
|
|
223
|
+
d10() {
|
|
224
|
+
return this.integer(1, 10);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Returns the result of a d12 dice roll
|
|
228
|
+
*/
|
|
229
|
+
d12() {
|
|
230
|
+
return this.integer(1, 12);
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Returns the result of a d20 dice roll
|
|
234
|
+
*/
|
|
235
|
+
d20() {
|
|
236
|
+
return this.integer(1, 20);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=Random.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Random.js","sourceRoot":"","sources":["../../../src/engine/Math/Random.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
import { Matrix } from './matrix';
|
|
2
|
+
import { canonicalizeAngle, sign } from './util';
|
|
3
|
+
import { vec, Vector } from './vector';
|
|
4
|
+
export class AffineMatrix {
|
|
5
|
+
constructor() {
|
|
6
|
+
/**
|
|
7
|
+
* | | | |
|
|
8
|
+
* | ------- | ------- | -------- |
|
|
9
|
+
* | data[0] | data[2] | data[4] |
|
|
10
|
+
* | data[1] | data[3] | data[5] |
|
|
11
|
+
* | 0 | 0 | 1 |
|
|
12
|
+
*/
|
|
13
|
+
this.data = new Float64Array(6);
|
|
14
|
+
this._scale = new Float64Array([1, 1]);
|
|
15
|
+
this._scaleSignX = 1;
|
|
16
|
+
this._scaleSignY = 1;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Converts the current matrix into a DOMMatrix
|
|
20
|
+
*
|
|
21
|
+
* This is useful when working with the browser Canvas context
|
|
22
|
+
* @returns {DOMMatrix} DOMMatrix
|
|
23
|
+
*/
|
|
24
|
+
toDOMMatrix() {
|
|
25
|
+
return new DOMMatrix([...this.data]);
|
|
26
|
+
}
|
|
27
|
+
static identity() {
|
|
28
|
+
const mat = new AffineMatrix();
|
|
29
|
+
mat.data[0] = 1;
|
|
30
|
+
mat.data[1] = 0;
|
|
31
|
+
mat.data[2] = 0;
|
|
32
|
+
mat.data[3] = 1;
|
|
33
|
+
mat.data[4] = 0;
|
|
34
|
+
mat.data[5] = 0;
|
|
35
|
+
return mat;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Creates a brand new translation matrix at the specified 3d point
|
|
39
|
+
* @param x
|
|
40
|
+
* @param y
|
|
41
|
+
*/
|
|
42
|
+
static translation(x, y) {
|
|
43
|
+
const mat = AffineMatrix.identity();
|
|
44
|
+
mat.data[4] = x;
|
|
45
|
+
mat.data[5] = y;
|
|
46
|
+
return mat;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Creates a brand new scaling matrix with the specified scaling factor
|
|
50
|
+
* @param sx
|
|
51
|
+
* @param sy
|
|
52
|
+
*/
|
|
53
|
+
static scale(sx, sy) {
|
|
54
|
+
const mat = AffineMatrix.identity();
|
|
55
|
+
mat.data[0] = sx;
|
|
56
|
+
mat.data[3] = sy;
|
|
57
|
+
mat._scale[0] = sx;
|
|
58
|
+
mat._scale[1] = sy;
|
|
59
|
+
return mat;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Creates a brand new rotation matrix with the specified angle
|
|
63
|
+
* @param angleRadians
|
|
64
|
+
*/
|
|
65
|
+
static rotation(angleRadians) {
|
|
66
|
+
const mat = AffineMatrix.identity();
|
|
67
|
+
mat.data[0] = Math.cos(angleRadians);
|
|
68
|
+
mat.data[1] = Math.sin(angleRadians);
|
|
69
|
+
mat.data[2] = -Math.sin(angleRadians);
|
|
70
|
+
mat.data[3] = Math.cos(angleRadians);
|
|
71
|
+
return mat;
|
|
72
|
+
}
|
|
73
|
+
setPosition(x, y) {
|
|
74
|
+
this.data[4] = x;
|
|
75
|
+
this.data[5] = y;
|
|
76
|
+
}
|
|
77
|
+
getPosition() {
|
|
78
|
+
return vec(this.data[4], this.data[5]);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Applies rotation to the current matrix mutating it
|
|
82
|
+
* @param angle in Radians
|
|
83
|
+
*/
|
|
84
|
+
rotate(angle) {
|
|
85
|
+
const a11 = this.data[0];
|
|
86
|
+
const a21 = this.data[1];
|
|
87
|
+
const a12 = this.data[2];
|
|
88
|
+
const a22 = this.data[3];
|
|
89
|
+
const sine = Math.sin(angle);
|
|
90
|
+
const cosine = Math.cos(angle);
|
|
91
|
+
this.data[0] = cosine * a11 + sine * a12;
|
|
92
|
+
this.data[1] = cosine * a21 + sine * a22;
|
|
93
|
+
this.data[2] = cosine * a12 - sine * a11;
|
|
94
|
+
this.data[3] = cosine * a22 - sine * a21;
|
|
95
|
+
return this;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Applies translation to the current matrix mutating it
|
|
99
|
+
* @param x
|
|
100
|
+
* @param y
|
|
101
|
+
*/
|
|
102
|
+
translate(x, y) {
|
|
103
|
+
const a11 = this.data[0];
|
|
104
|
+
const a21 = this.data[1];
|
|
105
|
+
// const a31 = 0;
|
|
106
|
+
const a12 = this.data[2];
|
|
107
|
+
const a22 = this.data[3];
|
|
108
|
+
// const a32 = 0;
|
|
109
|
+
const a13 = this.data[4];
|
|
110
|
+
const a23 = this.data[5];
|
|
111
|
+
// const a33 = 1;
|
|
112
|
+
// Doesn't change z
|
|
113
|
+
this.data[4] = a11 * x + a12 * y + a13;
|
|
114
|
+
this.data[5] = a21 * x + a22 * y + a23;
|
|
115
|
+
return this;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Applies scaling to the current matrix mutating it
|
|
119
|
+
* @param x
|
|
120
|
+
* @param y
|
|
121
|
+
*/
|
|
122
|
+
scale(x, y) {
|
|
123
|
+
const a11 = this.data[0];
|
|
124
|
+
const a21 = this.data[1];
|
|
125
|
+
const a12 = this.data[2];
|
|
126
|
+
const a22 = this.data[3];
|
|
127
|
+
this.data[0] = a11 * x;
|
|
128
|
+
this.data[1] = a21 * x;
|
|
129
|
+
this.data[2] = a12 * y;
|
|
130
|
+
this.data[3] = a22 * y;
|
|
131
|
+
this._scale[0] = x;
|
|
132
|
+
this._scale[1] = y;
|
|
133
|
+
return this;
|
|
134
|
+
}
|
|
135
|
+
determinant() {
|
|
136
|
+
return this.data[0] * this.data[3] - this.data[1] * this.data[2];
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Return the affine inverse, optionally store it in a target matrix.
|
|
140
|
+
*
|
|
141
|
+
* It's recommended you call .reset() the target unless you know what you're doing
|
|
142
|
+
* @param target
|
|
143
|
+
*/
|
|
144
|
+
inverse(target) {
|
|
145
|
+
// See http://negativeprobability.blogspot.com/2011/11/affine-transformations-and-their.html
|
|
146
|
+
// See https://www.mathsisfun.com/algebra/matrix-inverse.html
|
|
147
|
+
// Since we are actually only doing 2D transformations we can use this hack
|
|
148
|
+
// We don't actually use the 3rd or 4th dimension
|
|
149
|
+
const det = this.determinant();
|
|
150
|
+
const inverseDet = 1 / det; // TODO zero check
|
|
151
|
+
const a = this.data[0];
|
|
152
|
+
const b = this.data[2];
|
|
153
|
+
const c = this.data[1];
|
|
154
|
+
const d = this.data[3];
|
|
155
|
+
const m = target || AffineMatrix.identity();
|
|
156
|
+
// inverts rotation and scale
|
|
157
|
+
m.data[0] = d * inverseDet;
|
|
158
|
+
m.data[1] = -c * inverseDet;
|
|
159
|
+
m.data[2] = -b * inverseDet;
|
|
160
|
+
m.data[3] = a * inverseDet;
|
|
161
|
+
const tx = this.data[4];
|
|
162
|
+
const ty = this.data[5];
|
|
163
|
+
// invert translation
|
|
164
|
+
// transform translation into the matrix basis created by rot/scale
|
|
165
|
+
m.data[4] = -(tx * m.data[0] + ty * m.data[2]);
|
|
166
|
+
m.data[5] = -(tx * m.data[1] + ty * m.data[3]);
|
|
167
|
+
return m;
|
|
168
|
+
}
|
|
169
|
+
multiply(vectorOrMatrix, dest) {
|
|
170
|
+
if (vectorOrMatrix instanceof Vector) {
|
|
171
|
+
const result = dest || new Vector(0, 0);
|
|
172
|
+
const vector = vectorOrMatrix;
|
|
173
|
+
// these shenanigans are to allow dest and vector to be the same instance
|
|
174
|
+
const resultX = vector.x * this.data[0] + vector.y * this.data[2] + this.data[4];
|
|
175
|
+
const resultY = vector.x * this.data[1] + vector.y * this.data[3] + this.data[5];
|
|
176
|
+
result.x = resultX;
|
|
177
|
+
result.y = resultY;
|
|
178
|
+
return result;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
const result = dest || new AffineMatrix();
|
|
182
|
+
const other = vectorOrMatrix;
|
|
183
|
+
const a11 = this.data[0];
|
|
184
|
+
const a21 = this.data[1];
|
|
185
|
+
// const a31 = 0;
|
|
186
|
+
const a12 = this.data[2];
|
|
187
|
+
const a22 = this.data[3];
|
|
188
|
+
// const a32 = 0;
|
|
189
|
+
const a13 = this.data[4];
|
|
190
|
+
const a23 = this.data[5];
|
|
191
|
+
// const a33 = 1;
|
|
192
|
+
const b11 = other.data[0];
|
|
193
|
+
const b21 = other.data[1];
|
|
194
|
+
// const b31 = 0;
|
|
195
|
+
const b12 = other.data[2];
|
|
196
|
+
const b22 = other.data[3];
|
|
197
|
+
// const b32 = 0;
|
|
198
|
+
const b13 = other.data[4];
|
|
199
|
+
const b23 = other.data[5];
|
|
200
|
+
// const b33 = 1;
|
|
201
|
+
result.data[0] = a11 * b11 + a12 * b21; // + a13 * b31; // zero
|
|
202
|
+
result.data[1] = a21 * b11 + a22 * b21; // + a23 * b31; // zero
|
|
203
|
+
result.data[2] = a11 * b12 + a12 * b22; // + a13 * b32; // zero
|
|
204
|
+
result.data[3] = a21 * b12 + a22 * b22; // + a23 * b32; // zero
|
|
205
|
+
result.data[4] = a11 * b13 + a12 * b23 + a13; // * b33; // one
|
|
206
|
+
result.data[5] = a21 * b13 + a22 * b23 + a23; // * b33; // one
|
|
207
|
+
const s = this.getScale();
|
|
208
|
+
result._scaleSignX = sign(s.x) * sign(result._scaleSignX);
|
|
209
|
+
result._scaleSignY = sign(s.y) * sign(result._scaleSignY);
|
|
210
|
+
return result;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
to4x4() {
|
|
214
|
+
const mat = new Matrix();
|
|
215
|
+
mat.data[0] = this.data[0];
|
|
216
|
+
mat.data[1] = this.data[1];
|
|
217
|
+
mat.data[2] = 0;
|
|
218
|
+
mat.data[3] = 0;
|
|
219
|
+
mat.data[4] = this.data[2];
|
|
220
|
+
mat.data[5] = this.data[3];
|
|
221
|
+
mat.data[6] = 0;
|
|
222
|
+
mat.data[7] = 0;
|
|
223
|
+
mat.data[8] = 0;
|
|
224
|
+
mat.data[9] = 0;
|
|
225
|
+
mat.data[10] = 1;
|
|
226
|
+
mat.data[11] = 0;
|
|
227
|
+
mat.data[12] = this.data[4];
|
|
228
|
+
mat.data[13] = this.data[5];
|
|
229
|
+
mat.data[14] = 0;
|
|
230
|
+
mat.data[15] = 1;
|
|
231
|
+
return mat;
|
|
232
|
+
}
|
|
233
|
+
setRotation(angle) {
|
|
234
|
+
const currentScale = this.getScale();
|
|
235
|
+
const sine = Math.sin(angle);
|
|
236
|
+
const cosine = Math.cos(angle);
|
|
237
|
+
this.data[0] = cosine * currentScale.x;
|
|
238
|
+
this.data[1] = sine * currentScale.y;
|
|
239
|
+
this.data[2] = -sine * currentScale.x;
|
|
240
|
+
this.data[3] = cosine * currentScale.y;
|
|
241
|
+
}
|
|
242
|
+
getRotation() {
|
|
243
|
+
const angle = Math.atan2(this.data[1] / this.getScaleY(), this.data[0] / this.getScaleX());
|
|
244
|
+
return canonicalizeAngle(angle);
|
|
245
|
+
}
|
|
246
|
+
getScaleX() {
|
|
247
|
+
// absolute scale of the matrix (we lose sign so need to add it back)
|
|
248
|
+
const xscale = vec(this.data[0], this.data[2]).distance();
|
|
249
|
+
return this._scaleSignX * xscale;
|
|
250
|
+
}
|
|
251
|
+
getScaleY() {
|
|
252
|
+
// absolute scale of the matrix (we lose sign so need to add it back)
|
|
253
|
+
const yscale = vec(this.data[1], this.data[3]).distance();
|
|
254
|
+
return this._scaleSignY * yscale;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Get the scale of the matrix
|
|
258
|
+
*/
|
|
259
|
+
getScale() {
|
|
260
|
+
return vec(this.getScaleX(), this.getScaleY());
|
|
261
|
+
}
|
|
262
|
+
setScaleX(val) {
|
|
263
|
+
if (val === this._scale[0]) {
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
this._scaleSignX = sign(val);
|
|
267
|
+
// negative scale acts like a 180 rotation, so flip
|
|
268
|
+
const xscale = vec(this.data[0] * this._scaleSignX, this.data[2] * this._scaleSignX).normalize();
|
|
269
|
+
this.data[0] = xscale.x * val;
|
|
270
|
+
this.data[2] = xscale.y * val;
|
|
271
|
+
this._scale[0] = val;
|
|
272
|
+
}
|
|
273
|
+
setScaleY(val) {
|
|
274
|
+
if (val === this._scale[1]) {
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
this._scaleSignY = sign(val);
|
|
278
|
+
// negative scale acts like a 180 rotation, so flip
|
|
279
|
+
const yscale = vec(this.data[1] * this._scaleSignY, this.data[3] * this._scaleSignY).normalize();
|
|
280
|
+
this.data[1] = yscale.x * val;
|
|
281
|
+
this.data[3] = yscale.y * val;
|
|
282
|
+
this._scale[1] = val;
|
|
283
|
+
}
|
|
284
|
+
setScale(scale) {
|
|
285
|
+
this.setScaleX(scale.x);
|
|
286
|
+
this.setScaleY(scale.y);
|
|
287
|
+
}
|
|
288
|
+
isIdentity() {
|
|
289
|
+
return (this.data[0] === 1 &&
|
|
290
|
+
this.data[1] === 0 &&
|
|
291
|
+
this.data[2] === 0 &&
|
|
292
|
+
this.data[3] === 1 &&
|
|
293
|
+
this.data[4] === 0 &&
|
|
294
|
+
this.data[5] === 0);
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Resets the current matrix to the identity matrix, mutating it
|
|
298
|
+
* @returns {AffineMatrix} Current matrix as identity
|
|
299
|
+
*/
|
|
300
|
+
reset() {
|
|
301
|
+
const mat = this;
|
|
302
|
+
mat.data[0] = 1;
|
|
303
|
+
mat.data[1] = 0;
|
|
304
|
+
mat.data[2] = 0;
|
|
305
|
+
mat.data[3] = 1;
|
|
306
|
+
mat.data[4] = 0;
|
|
307
|
+
mat.data[5] = 0;
|
|
308
|
+
return mat;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Creates a new Matrix with the same data as the current 4x4
|
|
312
|
+
*/
|
|
313
|
+
clone(dest) {
|
|
314
|
+
const mat = dest || new AffineMatrix();
|
|
315
|
+
mat.data[0] = this.data[0];
|
|
316
|
+
mat.data[1] = this.data[1];
|
|
317
|
+
mat.data[2] = this.data[2];
|
|
318
|
+
mat.data[3] = this.data[3];
|
|
319
|
+
mat.data[4] = this.data[4];
|
|
320
|
+
mat.data[5] = this.data[5];
|
|
321
|
+
return mat;
|
|
322
|
+
}
|
|
323
|
+
toString() {
|
|
324
|
+
return `
|
|
325
|
+
[${this.data[0]} ${this.data[2]} ${this.data[4]}]
|
|
326
|
+
[${this.data[1]} ${this.data[3]} ${this.data[5]}]
|
|
327
|
+
[0 0 1]
|
|
328
|
+
`;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=affine-matrix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"affine-matrix.js","sourceRoot":"","sources":["../../../src/engine/Math/affine-matrix.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enum representing the coordinate plane for the position 2D vector in the [[TransformComponent]]
|
|
3
|
+
*/
|
|
4
|
+
export var CoordPlane;
|
|
5
|
+
(function (CoordPlane) {
|
|
6
|
+
/**
|
|
7
|
+
* The world coordinate plane (default) represents world space, any entities drawn with world
|
|
8
|
+
* space move when the camera moves.
|
|
9
|
+
*/
|
|
10
|
+
CoordPlane["World"] = "world";
|
|
11
|
+
/**
|
|
12
|
+
* The screen coordinate plane represents screen space, entities drawn in screen space are pinned
|
|
13
|
+
* to screen coordinates ignoring the camera.
|
|
14
|
+
*/
|
|
15
|
+
CoordPlane["Screen"] = "screen";
|
|
16
|
+
})(CoordPlane || (CoordPlane = {}));
|
|
17
|
+
//# sourceMappingURL=coord-plane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coord-plane.js","sourceRoot":"","sources":["../../../src/engine/Math/coord-plane.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,UAWX;AAXD,WAAY,UAAU;IACpB;;;OAGG;IACH,6BAAe,CAAA;IACf;;;OAGG;IACH,+BAAiB,CAAA;AACnB,CAAC,EAXW,UAAU,KAAV,UAAU,QAWrB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Vector } from './vector';
|
|
2
|
+
export class GlobalCoordinates {
|
|
3
|
+
static fromPagePosition(xOrPos, yOrEngine, engineOrUndefined) {
|
|
4
|
+
let pageX;
|
|
5
|
+
let pageY;
|
|
6
|
+
let pagePos;
|
|
7
|
+
let engine;
|
|
8
|
+
if (arguments.length === 3) {
|
|
9
|
+
pageX = xOrPos;
|
|
10
|
+
pageY = yOrEngine;
|
|
11
|
+
pagePos = new Vector(pageX, pageY);
|
|
12
|
+
engine = engineOrUndefined;
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
pagePos = xOrPos;
|
|
16
|
+
pageX = pagePos.x;
|
|
17
|
+
pageY = pagePos.y;
|
|
18
|
+
engine = yOrEngine;
|
|
19
|
+
}
|
|
20
|
+
const screenPos = engine.screen.pageToScreenCoordinates(pagePos);
|
|
21
|
+
const worldPos = engine.screen.screenToWorldCoordinates(screenPos);
|
|
22
|
+
return new GlobalCoordinates(worldPos, pagePos, screenPos);
|
|
23
|
+
}
|
|
24
|
+
constructor(worldPos, pagePos, screenPos) {
|
|
25
|
+
this.worldPos = worldPos;
|
|
26
|
+
this.pagePos = pagePos;
|
|
27
|
+
this.screenPos = screenPos;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=global-coordinates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-coordinates.js","sourceRoot":"","sources":["../../../src/engine/Math/global-coordinates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,OAAO,iBAAiB;IAGrB,MAAM,CAAC,gBAAgB,CAAC,MAAuB,EAAE,SAA0B,EAAE,iBAA0B;QAC5G,IAAI,KAAa,CAAC;QAClB,IAAI,KAAa,CAAC;QAClB,IAAI,OAAe,CAAC;QACpB,IAAI,MAAc,CAAC;QAEnB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,KAAK,GAAW,MAAM,CAAC;YACvB,KAAK,GAAW,SAAS,CAAC;YAC1B,OAAO,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACnC,MAAM,GAAG,iBAAiB,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,OAAO,GAAW,MAAM,CAAC;YACzB,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;YAClB,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;YAClB,MAAM,GAAW,SAAS,CAAC;QAC7B,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QAEnE,OAAO,IAAI,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,YAAmB,QAAgB,EAAS,OAAe,EAAS,SAAiB;QAAlE,aAAQ,GAAR,QAAQ,CAAQ;QAAS,YAAO,GAAP,OAAO,CAAQ;QAAS,cAAS,GAAT,SAAS,CAAQ;IAAG,CAAC;CAC1F"}
|