excalibur 0.25.2 → 0.25.3
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/CHANGELOG.md +7 -2
- package/build/dist/Actions/Action/Blink.js +51 -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 +25 -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/EaseTo.js +69 -0
- package/build/dist/Actions/Action/EaseTo.js.map +1 -0
- package/build/dist/Actions/Action/Fade.js +46 -0
- package/build/dist/Actions/Action/Fade.js.map +1 -0
- package/build/dist/Actions/Action/Follow.js +55 -0
- package/build/dist/Actions/Action/Follow.js.map +1 -0
- package/build/dist/Actions/Action/Meet.js +52 -0
- package/build/dist/Actions/Action/Meet.js.map +1 -0
- package/build/dist/Actions/Action/MoveBy.js +47 -0
- package/build/dist/Actions/Action/MoveBy.js.map +1 -0
- package/build/dist/Actions/Action/MoveTo.js +40 -0
- package/build/dist/Actions/Action/MoveTo.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 +91 -0
- package/build/dist/Actions/Action/RotateBy.js.map +1 -0
- package/build/dist/Actions/Action/RotateTo.js +90 -0
- package/build/dist/Actions/Action/RotateTo.js.map +1 -0
- package/build/dist/Actions/Action/ScaleBy.js +45 -0
- package/build/dist/Actions/Action/ScaleBy.js.map +1 -0
- package/build/dist/Actions/Action/ScaleTo.js +56 -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 +305 -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 +198 -0
- package/build/dist/Actions/ActionsComponent.js.map +1 -0
- package/build/dist/Actions/ActionsSystem.js +18 -0
- package/build/dist/Actions/ActionsSystem.js.map +1 -0
- package/build/dist/Actions/Index.js +22 -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 +831 -0
- package/build/dist/Actor.js.map +1 -0
- package/build/dist/Camera.js +663 -0
- package/build/dist/Camera.js.map +1 -0
- package/build/dist/Class.js +48 -0
- package/build/dist/Class.js.map +1 -0
- package/build/dist/Collision/BodyComponent.js +351 -0
- package/build/dist/Collision/BodyComponent.js.map +1 -0
- package/build/dist/Collision/BoundingBox.js +361 -0
- package/build/dist/Collision/BoundingBox.js.map +1 -0
- package/build/dist/Collision/ColliderComponent.js +198 -0
- package/build/dist/Collision/ColliderComponent.js.map +1 -0
- package/build/dist/Collision/Colliders/CircleCollider.js +264 -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 +26 -0
- package/build/dist/Collision/Colliders/Collider.js.map +1 -0
- package/build/dist/Collision/Colliders/CollisionJumpTable.js +301 -0
- package/build/dist/Collision/Colliders/CollisionJumpTable.js.map +1 -0
- package/build/dist/Collision/Colliders/CompositeCollider.js +232 -0
- package/build/dist/Collision/Colliders/CompositeCollider.js.map +1 -0
- package/build/dist/Collision/Colliders/EdgeCollider.js +253 -0
- package/build/dist/Collision/Colliders/EdgeCollider.js.map +1 -0
- package/build/dist/Collision/Colliders/PolygonCollider.js +389 -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 +102 -0
- package/build/dist/Collision/Colliders/Shape.js.map +1 -0
- package/build/dist/Collision/CollisionSystem.js +116 -0
- package/build/dist/Collision/CollisionSystem.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 +46 -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/DynamicTreeCollisionProcessor.js +211 -0
- package/build/dist/Collision/Detection/DynamicTreeCollisionProcessor.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/Group/CollisionGroup.js +114 -0
- package/build/dist/Collision/Group/CollisionGroup.js.map +1 -0
- package/build/dist/Collision/Group/CollisionGroupManager.js +52 -0
- package/build/dist/Collision/Group/CollisionGroupManager.js.map +1 -0
- package/build/dist/Collision/Index.js +29 -0
- package/build/dist/Collision/Index.js.map +1 -0
- package/build/dist/Collision/Integrator.js +11 -0
- package/build/dist/Collision/Integrator.js.map +1 -0
- package/build/dist/Collision/MotionSystem.js +42 -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/Side.js +51 -0
- package/build/dist/Collision/Side.js.map +1 -0
- package/build/dist/Collision/Solver/ArcadeSolver.js +101 -0
- package/build/dist/Collision/Solver/ArcadeSolver.js.map +1 -0
- package/build/dist/Collision/Solver/ContactConstraintPoint.js +83 -0
- package/build/dist/Collision/Solver/ContactConstraintPoint.js.map +1 -0
- package/build/dist/Collision/Solver/RealisticSolver.js +248 -0
- package/build/dist/Collision/Solver/RealisticSolver.js.map +1 -0
- package/build/dist/Collision/Solver/Solver.js +37 -0
- package/build/dist/Collision/Solver/Solver.js.map +1 -0
- package/build/dist/Color.js +461 -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.js +375 -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 +251 -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/Drawing/Animation.js +294 -0
- package/build/dist/Drawing/Animation.js.map +1 -0
- package/build/dist/Drawing/CanvasDrawComponent.js +16 -0
- package/build/dist/Drawing/CanvasDrawComponent.js.map +1 -0
- package/build/dist/Drawing/CanvasDrawingSystem.js +95 -0
- package/build/dist/Drawing/CanvasDrawingSystem.js.map +1 -0
- package/build/dist/Drawing/Index.js +10 -0
- package/build/dist/Drawing/Index.js.map +1 -0
- package/build/dist/Drawing/Polygon.js +139 -0
- package/build/dist/Drawing/Polygon.js.map +1 -0
- package/build/dist/Drawing/Sprite.js +355 -0
- package/build/dist/Drawing/Sprite.js.map +1 -0
- package/build/dist/Drawing/SpriteEffects.js +246 -0
- package/build/dist/Drawing/SpriteEffects.js.map +1 -0
- package/build/dist/Drawing/SpriteSheet.js +413 -0
- package/build/dist/Drawing/SpriteSheet.js.map +1 -0
- package/build/dist/Drawing/Texture.js +69 -0
- package/build/dist/Drawing/Texture.js.map +1 -0
- package/build/dist/Engine.d.ts +4 -1
- package/build/dist/Engine.js +985 -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 +249 -0
- package/build/dist/EntityComponentSystem/Components/TransformComponent.js.map +1 -0
- package/build/dist/EntityComponentSystem/Entity.js +452 -0
- package/build/dist/EntityComponentSystem/Entity.js.map +1 -0
- package/build/dist/EntityComponentSystem/EntityManager.js +128 -0
- package/build/dist/EntityComponentSystem/EntityManager.js.map +1 -0
- package/build/dist/EntityComponentSystem/Query.js +91 -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 +102 -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 +114 -0
- package/build/dist/EventDispatcher.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 +497 -0
- package/build/dist/Events.js.map +1 -0
- package/build/dist/Flags.js +90 -0
- package/build/dist/Flags.js.map +1 -0
- package/build/dist/Graphics/Animation.js +310 -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 +47 -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 +207 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContext2DCanvas.js.map +1 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContextWebGL.js +331 -0
- package/build/dist/Graphics/Context/ExcaliburGraphicsContextWebGL.js.map +1 -0
- package/build/dist/Graphics/Context/circle-renderer/circle-renderer.js +160 -0
- package/build/dist/Graphics/Context/circle-renderer/circle-renderer.js.map +1 -0
- 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/image-renderer/image-renderer.js +209 -0
- package/build/dist/Graphics/Context/image-renderer/image-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/line-renderer/line-renderer.js +87 -0
- package/build/dist/Graphics/Context/line-renderer/line-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/point-renderer/point-renderer.js +82 -0
- package/build/dist/Graphics/Context/point-renderer/point-renderer.js.map +1 -0
- package/build/dist/Graphics/Context/quad-index-buffer.js +69 -0
- package/build/dist/Graphics/Context/quad-index-buffer.js.map +1 -0
- package/build/dist/Graphics/Context/rectangle-renderer/rectangle-renderer.js +272 -0
- package/build/dist/Graphics/Context/rectangle-renderer/rectangle-renderer.js.map +1 -0
- 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-pass-painter.js +53 -0
- package/build/dist/Graphics/Context/screen-pass-painter/screen-pass-painter.js.map +1 -0
- package/build/dist/Graphics/Context/shader.js +236 -0
- package/build/dist/Graphics/Context/shader.js.map +1 -0
- package/build/dist/Graphics/Context/state-stack.js +27 -0
- package/build/dist/Graphics/Context/state-stack.js.map +1 -0
- package/build/dist/Graphics/Context/texture-loader.d.ts +8 -0
- package/build/dist/Graphics/Context/texture-loader.js +121 -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 +45 -0
- package/build/dist/Graphics/Context/vertex-buffer.js.map +1 -0
- package/build/dist/Graphics/Context/vertex-layout.js +93 -0
- package/build/dist/Graphics/Context/vertex-layout.js.map +1 -0
- package/build/dist/Graphics/Context/webgl-adapter.js +19 -0
- package/build/dist/Graphics/Context/webgl-adapter.js.map +1 -0
- package/build/dist/Graphics/Context/webgl-util.js +105 -0
- package/build/dist/Graphics/Context/webgl-util.js.map +1 -0
- package/build/dist/Graphics/DebugGraphicsComponent.js +15 -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 +293 -0
- package/build/dist/Graphics/Font.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/Graphic.js +200 -0
- package/build/dist/Graphics/Graphic.js.map +1 -0
- package/build/dist/Graphics/GraphicsComponent.js +290 -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 +153 -0
- package/build/dist/Graphics/GraphicsSystem.js.map +1 -0
- package/build/dist/Graphics/ImageSource.js +116 -0
- package/build/dist/Graphics/ImageSource.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 +56 -0
- package/build/dist/Graphics/PostProcessor/ScreenShader.js.map +1 -0
- package/build/dist/Graphics/Raster.js +207 -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 +103 -0
- package/build/dist/Graphics/Sprite.js.map +1 -0
- package/build/dist/Graphics/SpriteFont.js +120 -0
- package/build/dist/Graphics/SpriteFont.js.map +1 -0
- package/build/dist/Graphics/SpriteSheet.js +115 -0
- package/build/dist/Graphics/SpriteSheet.js.map +1 -0
- package/build/dist/Graphics/Text.js +94 -0
- package/build/dist/Graphics/Text.js.map +1 -0
- package/build/dist/Graphics/index.js +42 -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 +358 -0
- package/build/dist/Input/Gamepad.js.map +1 -0
- package/build/dist/Input/Index.js +22 -0
- package/build/dist/Input/Index.js.map +1 -0
- package/build/dist/Input/Keyboard.js +267 -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 +41 -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 +414 -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 +217 -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/Drawable.js +2 -0
- package/build/dist/Interfaces/Drawable.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 +10 -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/Interfaces/Trait.js +2 -0
- package/build/dist/Interfaces/Trait.js.map +1 -0
- package/build/dist/Label.js +273 -0
- package/build/dist/Label.js.map +1 -0
- package/build/dist/Loader.js +367 -0
- package/build/dist/Loader.js.map +1 -0
- package/build/dist/Math/Index.js +10 -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/global-coordinates.js +30 -0
- package/build/dist/Math/global-coordinates.js.map +1 -0
- package/build/dist/Math/line.js +194 -0
- package/build/dist/Math/line.js.map +1 -0
- package/build/dist/Math/matrix.js +446 -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/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 +326 -0
- package/build/dist/Math/vector.js.map +1 -0
- package/build/dist/Particles.js +449 -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/Promises.js +205 -0
- package/build/dist/Promises.js.map +1 -0
- package/build/dist/Resources/Gif.js +479 -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 +74 -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 +240 -0
- package/build/dist/Resources/Sound/Sound.js.map +1 -0
- package/build/dist/Resources/Sound/WebAudioInstance.js +160 -0
- package/build/dist/Resources/Sound/WebAudioInstance.js.map +1 -0
- package/build/dist/Scene.js +458 -0
- package/build/dist/Scene.js.map +1 -0
- package/build/dist/Screen.js +634 -0
- package/build/dist/Screen.js.map +1 -0
- package/build/dist/ScreenElement.js +29 -0
- package/build/dist/ScreenElement.js.map +1 -0
- package/build/dist/TileMap.js +488 -0
- package/build/dist/TileMap.js.map +1 -0
- package/build/dist/Timer.js +198 -0
- package/build/dist/Timer.js.map +1 -0
- package/build/dist/Traits/Index.js +5 -0
- package/build/dist/Traits/Index.js.map +1 -0
- package/build/dist/Traits/OffscreenCulling.js +35 -0
- package/build/dist/Traits/OffscreenCulling.js.map +1 -0
- package/build/dist/Trigger.js +113 -0
- package/build/dist/Trigger.js.map +1 -0
- package/build/dist/Util/Actors.js +19 -0
- package/build/dist/Util/Actors.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/CullingBox.js +104 -0
- package/build/dist/Util/CullingBox.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 +117 -0
- package/build/dist/Util/DrawUtil.js.map +1 -0
- package/build/dist/Util/EasingFunctions.js +118 -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/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 +60 -0
- package/build/dist/Util/Observable.js.map +1 -0
- package/build/dist/Util/Pool.js +66 -0
- package/build/dist/Util/Pool.js.map +1 -0
- package/build/dist/Util/SortedList.js +261 -0
- package/build/dist/Util/SortedList.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/Util.js +294 -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.js +101 -22
- 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 +74 -0
- package/build/dist/index.js.map +1 -0
- package/build/esm/Engine.d.ts +4 -1
- package/build/esm/Graphics/Context/texture-loader.d.ts +8 -0
- package/build/esm/excalibur.js +101 -22
- 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/package.json +23 -22
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DynamicTreeCollisionProcessor.js","sourceRoot":"","sources":["../../../../src/engine/Collision/Detection/DynamicTreeCollisionProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { CollisionType } from '../CollisionType';
|
|
2
|
+
import { BodyComponent } from '../BodyComponent';
|
|
3
|
+
/**
|
|
4
|
+
* Models a potential collision between 2 colliders
|
|
5
|
+
*/
|
|
6
|
+
export class Pair {
|
|
7
|
+
constructor(colliderA, colliderB) {
|
|
8
|
+
this.colliderA = colliderA;
|
|
9
|
+
this.colliderB = colliderB;
|
|
10
|
+
this.id = null;
|
|
11
|
+
this.id = Pair.calculatePairHash(colliderA.id, colliderB.id);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Returns whether a it is allowed for 2 colliders in a Pair to collide
|
|
15
|
+
* @param colliderA
|
|
16
|
+
* @param colliderB
|
|
17
|
+
*/
|
|
18
|
+
static canCollide(colliderA, colliderB) {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
const bodyA = (_a = colliderA === null || colliderA === void 0 ? void 0 : colliderA.owner) === null || _a === void 0 ? void 0 : _a.get(BodyComponent);
|
|
21
|
+
const bodyB = (_b = colliderB === null || colliderB === void 0 ? void 0 : colliderB.owner) === null || _b === void 0 ? void 0 : _b.get(BodyComponent);
|
|
22
|
+
// Prevent self collision
|
|
23
|
+
if (colliderA.id === colliderB.id) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
// Colliders with the same owner do not collide (composite colliders)
|
|
27
|
+
if (colliderA.owner &&
|
|
28
|
+
colliderB.owner &&
|
|
29
|
+
colliderA.owner.id === colliderB.owner.id) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
// if the pair has a member with zero dimension don't collide
|
|
33
|
+
if (colliderA.localBounds.hasZeroDimensions() || colliderB.localBounds.hasZeroDimensions()) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
// Body's needed for collision in the current state
|
|
37
|
+
// TODO can we collide without a body?
|
|
38
|
+
if (!bodyA || !bodyB) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
// If both are in the same collision group short circuit
|
|
42
|
+
if (!bodyA.group.canCollide(bodyB.group)) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
// if both are fixed short circuit
|
|
46
|
+
if (bodyA.collisionType === CollisionType.Fixed && bodyB.collisionType === CollisionType.Fixed) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
// if the either is prevent collision short circuit
|
|
50
|
+
if (bodyB.collisionType === CollisionType.PreventCollision || bodyA.collisionType === CollisionType.PreventCollision) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
// if either is dead short circuit
|
|
54
|
+
if (!bodyA.active || !bodyB.active) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Returns whether or not it is possible for the pairs to collide
|
|
61
|
+
*/
|
|
62
|
+
get canCollide() {
|
|
63
|
+
const colliderA = this.colliderA;
|
|
64
|
+
const colliderB = this.colliderB;
|
|
65
|
+
return Pair.canCollide(colliderA, colliderB);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Runs the collision intersection logic on the members of this pair
|
|
69
|
+
*/
|
|
70
|
+
collide() {
|
|
71
|
+
return this.colliderA.collide(this.colliderB);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Check if the collider is part of the pair
|
|
75
|
+
* @param collider
|
|
76
|
+
*/
|
|
77
|
+
hasCollider(collider) {
|
|
78
|
+
return collider === this.colliderA || collider === this.colliderB;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Calculates the unique pair hash id for this collision pair (owning id)
|
|
82
|
+
*/
|
|
83
|
+
static calculatePairHash(idA, idB) {
|
|
84
|
+
if (idA.value < idB.value) {
|
|
85
|
+
return `#${idA.value}+${idB.value}`;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
return `#${idB.value}+${idA.value}`;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=Pair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pair.js","sourceRoot":"","sources":["../../../../src/engine/Collision/Detection/Pair.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CollisionGroups indicate like members that do not collide with each other. Use [[CollisionGroupManager]] to create [[CollisionGroup]]s
|
|
3
|
+
*
|
|
4
|
+
* For example:
|
|
5
|
+
*
|
|
6
|
+
* Players have collision group "player"
|
|
7
|
+
*
|
|
8
|
+
* 
|
|
9
|
+
*
|
|
10
|
+
* Enemies have collision group "enemy"
|
|
11
|
+
*
|
|
12
|
+
* 
|
|
13
|
+
*
|
|
14
|
+
* Blocks have collision group "ground"
|
|
15
|
+
*
|
|
16
|
+
* 
|
|
17
|
+
*
|
|
18
|
+
* Players don't collide with each other, but enemies and blocks. Likewise, enemies don't collide with each other but collide
|
|
19
|
+
* with players and blocks.
|
|
20
|
+
*
|
|
21
|
+
* This is done with bitmasking, see the following pseudo-code
|
|
22
|
+
*
|
|
23
|
+
* PlayerGroup = `0b001`
|
|
24
|
+
* PlayerGroupMask = `0b110`
|
|
25
|
+
*
|
|
26
|
+
* EnemyGroup = `0b010`
|
|
27
|
+
* EnemyGroupMask = `0b101`
|
|
28
|
+
*
|
|
29
|
+
* BlockGroup = `0b100`
|
|
30
|
+
* BlockGroupMask = `0b011`
|
|
31
|
+
*
|
|
32
|
+
* Should Players collide? No because the bitwise mask evaluates to 0
|
|
33
|
+
* `(player1.group & player2.mask) === 0`
|
|
34
|
+
* `(0b001 & 0b110) === 0`
|
|
35
|
+
*
|
|
36
|
+
* Should Players and Enemies collide? Yes because the bitwise mask is non-zero
|
|
37
|
+
* `(player1.group & enemy1.mask) === 1`
|
|
38
|
+
* `(0b001 & 0b101) === 1`
|
|
39
|
+
*
|
|
40
|
+
* Should Players and Blocks collide? Yes because the bitwise mask is non-zero
|
|
41
|
+
* `(player1.group & blocks1.mask) === 1`
|
|
42
|
+
* `(0b001 & 0b011) === 1`
|
|
43
|
+
*/
|
|
44
|
+
export class CollisionGroup {
|
|
45
|
+
/**
|
|
46
|
+
* STOP!!** It is preferred that [[CollisionGroupManager.create]] is used to create collision groups
|
|
47
|
+
* unless you know how to construct the proper bitmasks. See https://github.com/excaliburjs/Excalibur/issues/1091 for more info.
|
|
48
|
+
* @param name Name of the collision group
|
|
49
|
+
* @param category 32 bit category for the group, should be a unique power of 2. For example `0b001` or `0b010`
|
|
50
|
+
* @param mask 32 bit mask of category, or `~category` generally. For a category of `0b001`, the mask would be `0b110`
|
|
51
|
+
*/
|
|
52
|
+
constructor(name, category, mask) {
|
|
53
|
+
this._name = name;
|
|
54
|
+
this._category = category;
|
|
55
|
+
this._mask = mask;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get the name of the collision group
|
|
59
|
+
*/
|
|
60
|
+
get name() {
|
|
61
|
+
return this._name;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get the category of the collision group, a 32 bit number which should be a unique power of 2
|
|
65
|
+
*/
|
|
66
|
+
get category() {
|
|
67
|
+
return this._category;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get the mask for this collision group
|
|
71
|
+
*/
|
|
72
|
+
get mask() {
|
|
73
|
+
return this._mask;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Evaluates whether 2 collision groups can collide
|
|
77
|
+
* @param other CollisionGroup
|
|
78
|
+
*/
|
|
79
|
+
canCollide(other) {
|
|
80
|
+
return (this.category & other.mask) !== 0 && (other.category & this.mask) !== 0;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Inverts the collision group. For example, if before the group specified "players",
|
|
84
|
+
* inverting would specify all groups except players
|
|
85
|
+
* @returns CollisionGroup
|
|
86
|
+
*/
|
|
87
|
+
invert() {
|
|
88
|
+
return new CollisionGroup('~(' + this.name + ')', ~this.category, ~this.mask);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Combine collision groups with each other. The new group includes all of the previous groups.
|
|
92
|
+
*
|
|
93
|
+
* @param collisionGroups
|
|
94
|
+
*/
|
|
95
|
+
static combine(collisionGroups) {
|
|
96
|
+
const combinedName = collisionGroups.map((c) => c.name).join('+');
|
|
97
|
+
const combinedCategory = collisionGroups.reduce((current, g) => g.category | current, 0b0);
|
|
98
|
+
const combinedMask = ~combinedCategory;
|
|
99
|
+
return new CollisionGroup(combinedName, combinedCategory, combinedMask);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Creates a collision group that collides with the listed groups
|
|
103
|
+
* @param collisionGroups
|
|
104
|
+
*/
|
|
105
|
+
static collidesWith(collisionGroups) {
|
|
106
|
+
return CollisionGroup.combine(collisionGroups).invert();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The `All` [[CollisionGroup]] is a special group that collides with all other groups including itself,
|
|
111
|
+
* it is the default collision group on colliders.
|
|
112
|
+
*/
|
|
113
|
+
CollisionGroup.All = new CollisionGroup('Collide with all groups', -1, -1);
|
|
114
|
+
//# sourceMappingURL=CollisionGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollisionGroup.js","sourceRoot":"","sources":["../../../../src/engine/Collision/Group/CollisionGroup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,OAAO,cAAc;IAWzB;;;;;;OAMG;IACH,YAAY,IAAY,EAAE,QAAgB,EAAE,IAAY;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;OAGG;IACI,UAAU,CAAC,KAAqB;QACrC,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClF,CAAC;IAED;;;;OAIG;IACI,MAAM;QACX,OAAO,IAAI,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,OAAO,CAAC,eAAiC;QACrD,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClE,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3F,MAAM,YAAY,GAAG,CAAC,gBAAgB,CAAC;QAEvC,OAAO,IAAI,cAAc,CAAC,YAAY,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC;IAC1E,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,YAAY,CAAC,eAAiC;QAC1D,OAAO,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1D,CAAC;;AAhFD;;;GAGG;AACW,kBAAG,GAAG,IAAI,cAAc,CAAC,yBAAyB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { CollisionGroup } from './CollisionGroup';
|
|
2
|
+
/**
|
|
3
|
+
* Static class for managing collision groups in excalibur, there is a maximum of 32 collision groups possible in excalibur
|
|
4
|
+
*/
|
|
5
|
+
export class CollisionGroupManager {
|
|
6
|
+
/**
|
|
7
|
+
* Create a new named collision group up to a max of 32.
|
|
8
|
+
* @param name Name for the collision group
|
|
9
|
+
* @param mask Optionally provide your own 32-bit mask, if none is provide the manager will generate one
|
|
10
|
+
*/
|
|
11
|
+
static create(name, mask) {
|
|
12
|
+
if (this._CURRENT_GROUP > this._MAX_GROUPS) {
|
|
13
|
+
throw new Error(`Cannot have more than ${this._MAX_GROUPS} collision groups`);
|
|
14
|
+
}
|
|
15
|
+
if (this._GROUPS.get(name)) {
|
|
16
|
+
throw new Error(`Collision group ${name} already exists`);
|
|
17
|
+
}
|
|
18
|
+
const group = new CollisionGroup(name, this._CURRENT_BIT, mask !== undefined ? mask : ~this._CURRENT_BIT);
|
|
19
|
+
this._CURRENT_BIT = (this._CURRENT_BIT << 1) | 0;
|
|
20
|
+
this._CURRENT_GROUP++;
|
|
21
|
+
this._GROUPS.set(name, group);
|
|
22
|
+
return group;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get all collision groups currently tracked by excalibur
|
|
26
|
+
*/
|
|
27
|
+
static get groups() {
|
|
28
|
+
return Array.from(this._GROUPS.values());
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get a collision group by it's name
|
|
32
|
+
* @param name
|
|
33
|
+
*/
|
|
34
|
+
static groupByName(name) {
|
|
35
|
+
return this._GROUPS.get(name);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Resets the managers internal group management state
|
|
39
|
+
*/
|
|
40
|
+
static reset() {
|
|
41
|
+
this._GROUPS = new Map();
|
|
42
|
+
this._CURRENT_BIT = this._STARTING_BIT;
|
|
43
|
+
this._CURRENT_GROUP = 1;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// using bitmasking the maximum number of groups is 32, because that is the highest 32bit integer that JS can present.
|
|
47
|
+
CollisionGroupManager._STARTING_BIT = 0b1 | 0;
|
|
48
|
+
CollisionGroupManager._MAX_GROUPS = 32;
|
|
49
|
+
CollisionGroupManager._CURRENT_GROUP = 1;
|
|
50
|
+
CollisionGroupManager._CURRENT_BIT = CollisionGroupManager._STARTING_BIT;
|
|
51
|
+
CollisionGroupManager._GROUPS = new Map();
|
|
52
|
+
//# sourceMappingURL=CollisionGroupManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollisionGroupManager.js","sourceRoot":"","sources":["../../../../src/engine/Collision/Group/CollisionGroupManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAQhC;;;;OAIG;IACI,MAAM,CAAC,MAAM,CAAC,IAAY,EAAE,IAAa;QAC9C,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,WAAW,mBAAmB,CAAC,CAAC;SAC/E;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,iBAAiB,CAAC,CAAC;SAC3D;QACD,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1G,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACI,MAAM,KAAK,MAAM;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,WAAW,CAAC,IAAY;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAK;QACjB,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC1B,CAAC;;AAhDD,sHAAsH;AACvG,mCAAa,GAAG,GAAG,GAAG,CAAC,CAAC;AACxB,iCAAW,GAAG,EAAE,CAAC;AACjB,oCAAc,GAAG,CAAC,CAAC;AACnB,kCAAY,GAAG,qBAAqB,CAAC,aAAa,CAAC;AACnD,6BAAO,GAAgC,IAAI,GAAG,EAA0B,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export * from './BodyComponent';
|
|
2
|
+
export * from './ColliderComponent';
|
|
3
|
+
export * from './CollisionType';
|
|
4
|
+
export * from './Colliders/Collider';
|
|
5
|
+
export * from './BoundingBox';
|
|
6
|
+
export * from './Colliders/Shape';
|
|
7
|
+
export * from './Colliders/Collider';
|
|
8
|
+
export * from './Colliders/CompositeCollider';
|
|
9
|
+
export * from './Colliders/CircleCollider';
|
|
10
|
+
export * from './Colliders/EdgeCollider';
|
|
11
|
+
export * from './Colliders/PolygonCollider';
|
|
12
|
+
export * from './Colliders/CollisionJumpTable';
|
|
13
|
+
export * from './Colliders/ClosestLineJumpTable';
|
|
14
|
+
export * from './Group/CollisionGroup';
|
|
15
|
+
export * from './Group/CollisionGroupManager';
|
|
16
|
+
export * from './Detection/Pair';
|
|
17
|
+
export * from './Detection/CollisionContact';
|
|
18
|
+
export * from './Detection/CollisionProcessor';
|
|
19
|
+
export * from './Detection/DynamicTree';
|
|
20
|
+
export * from './Detection/DynamicTreeCollisionProcessor';
|
|
21
|
+
export * from './Solver/ArcadeSolver';
|
|
22
|
+
export * from './Solver/ContactConstraintPoint';
|
|
23
|
+
export * from './Solver/RealisticSolver';
|
|
24
|
+
export * from './Solver/Solver';
|
|
25
|
+
export * from './CollisionSystem';
|
|
26
|
+
export * from './MotionSystem';
|
|
27
|
+
export * from './Physics';
|
|
28
|
+
export * from './Side';
|
|
29
|
+
//# sourceMappingURL=Index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../src/engine/Collision/Index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAE9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AAEjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAE9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2CAA2C,CAAC;AAE1D,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAEhC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export class EulerIntegrator {
|
|
2
|
+
static integrate(transform, motion, totalAcc, elapsedMs) {
|
|
3
|
+
const seconds = elapsedMs / 1000;
|
|
4
|
+
motion.vel.addEqual(totalAcc.scale(seconds));
|
|
5
|
+
transform.pos.addEqual(motion.vel.scale(seconds)).addEqual(totalAcc.scale(0.5 * seconds * seconds));
|
|
6
|
+
motion.angularVelocity += motion.torque * (1.0 / motion.inertia) * seconds;
|
|
7
|
+
transform.rotation += motion.angularVelocity * seconds;
|
|
8
|
+
transform.scale.addEqual(motion.scaleFactor.scale(seconds));
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=Integrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Integrator.js","sourceRoot":"","sources":["../../../src/engine/Collision/Integrator.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAC,SAAS,CAAC,SAA6B,EAAE,MAAuB,EAAE,QAAgB,EAAE,SAAiB;QAC1G,MAAM,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;QAEpG,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;QAC3E,SAAS,CAAC,QAAQ,IAAI,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC;QAEvD,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { MotionComponent } from '../EntityComponentSystem/Components/MotionComponent';
|
|
2
|
+
import { TransformComponent } from '../EntityComponentSystem/Components/TransformComponent';
|
|
3
|
+
import { System, SystemType } from '../EntityComponentSystem/System';
|
|
4
|
+
import { Physics } from './Physics';
|
|
5
|
+
import { BodyComponent } from './BodyComponent';
|
|
6
|
+
import { CollisionType } from './CollisionType';
|
|
7
|
+
import { EulerIntegrator } from './Integrator';
|
|
8
|
+
export class MotionSystem extends System {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.types = ['ex.transform', 'ex.motion'];
|
|
12
|
+
this.systemType = SystemType.Update;
|
|
13
|
+
this.priority = -1;
|
|
14
|
+
}
|
|
15
|
+
update(_entities, elapsedMs) {
|
|
16
|
+
let transform;
|
|
17
|
+
let motion;
|
|
18
|
+
for (const entity of _entities) {
|
|
19
|
+
transform = entity.get(TransformComponent);
|
|
20
|
+
motion = entity.get(MotionComponent);
|
|
21
|
+
const optionalBody = entity.get(BodyComponent);
|
|
22
|
+
if (optionalBody === null || optionalBody === void 0 ? void 0 : optionalBody.sleeping) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
const totalAcc = motion.acc.clone();
|
|
26
|
+
if ((optionalBody === null || optionalBody === void 0 ? void 0 : optionalBody.collisionType) === CollisionType.Active && (optionalBody === null || optionalBody === void 0 ? void 0 : optionalBody.useGravity)) {
|
|
27
|
+
totalAcc.addEqual(Physics.gravity);
|
|
28
|
+
}
|
|
29
|
+
optionalBody === null || optionalBody === void 0 ? void 0 : optionalBody.captureOldTransform();
|
|
30
|
+
// Update transform and motion based on Euler linear algebra
|
|
31
|
+
EulerIntegrator.integrate(transform, motion, totalAcc, elapsedMs);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @deprecated signature will change in v0.26.0
|
|
36
|
+
* @param _ctx
|
|
37
|
+
*/
|
|
38
|
+
debugDraw(_ctx) {
|
|
39
|
+
// pass
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=MotionSystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MotionSystem.js","sourceRoot":"","sources":["../../../src/engine/Collision/MotionSystem.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qDAAqD,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAC5F,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,OAAO,YAAa,SAAQ,MAA4C;IAA9E;;QACkB,UAAK,GAAG,CAAC,cAAc,EAAE,WAAW,CAAU,CAAC;QACxD,eAAU,GAAG,UAAU,CAAC,MAAM,CAAC;QAC/B,aAAQ,GAAG,CAAC,CAAC,CAAC;IAgCvB,CAAC;IA9BC,MAAM,CAAC,SAAmB,EAAE,SAAiB;QAC3C,IAAI,SAA6B,CAAC;QAClC,IAAI,MAAuB,CAAC;QAC5B,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE;YAC9B,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC3C,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAErC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC/C,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,QAAQ,EAAE;gBAC1B,SAAS;aACV;YAED,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,aAAa,MAAK,aAAa,CAAC,MAAM,KAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,CAAA,EAAE;gBACpF,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;aACpC;YACD,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,mBAAmB,EAAE,CAAC;YAEpC,4DAA4D;YAC5D,eAAe,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;SACnE;IACH,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,IAA8B;QACtC,OAAO;IACT,CAAC;CACF"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Vector } from '../Math/vector';
|
|
8
|
+
import { obsolete } from '../Util/Decorators';
|
|
9
|
+
/**
|
|
10
|
+
* Possible collision resolution strategies
|
|
11
|
+
*
|
|
12
|
+
* The default is [[CollisionResolutionStrategy.Arcade]] which performs simple axis aligned arcade style physics. This is useful for things
|
|
13
|
+
* like platformers or top down games.
|
|
14
|
+
*
|
|
15
|
+
* More advanced rigid body physics are enabled by setting [[CollisionResolutionStrategy.Realistic]] which allows for complicated
|
|
16
|
+
* simulated physical interactions.
|
|
17
|
+
*/
|
|
18
|
+
export var CollisionResolutionStrategy;
|
|
19
|
+
(function (CollisionResolutionStrategy) {
|
|
20
|
+
CollisionResolutionStrategy["Arcade"] = "arcade";
|
|
21
|
+
CollisionResolutionStrategy["Realistic"] = "realistic";
|
|
22
|
+
})(CollisionResolutionStrategy || (CollisionResolutionStrategy = {}));
|
|
23
|
+
/**
|
|
24
|
+
* Possible broadphase collision pair identification strategies
|
|
25
|
+
*
|
|
26
|
+
* The default strategy is [[BroadphaseStrategy.DynamicAABBTree]] which uses a binary tree of axis-aligned bounding boxes to identify
|
|
27
|
+
* potential collision pairs which is O(nlog(n)) faster.
|
|
28
|
+
*/
|
|
29
|
+
export var BroadphaseStrategy;
|
|
30
|
+
(function (BroadphaseStrategy) {
|
|
31
|
+
BroadphaseStrategy[BroadphaseStrategy["DynamicAABBTree"] = 0] = "DynamicAABBTree";
|
|
32
|
+
})(BroadphaseStrategy || (BroadphaseStrategy = {}));
|
|
33
|
+
/**
|
|
34
|
+
* Possible numerical integrators for position and velocity
|
|
35
|
+
*/
|
|
36
|
+
export var Integrator;
|
|
37
|
+
(function (Integrator) {
|
|
38
|
+
Integrator[Integrator["Euler"] = 0] = "Euler";
|
|
39
|
+
})(Integrator || (Integrator = {}));
|
|
40
|
+
/**
|
|
41
|
+
* The [[Physics]] object is the global configuration object for all Excalibur physics.
|
|
42
|
+
*/
|
|
43
|
+
/* istanbul ignore next */
|
|
44
|
+
export class Physics {
|
|
45
|
+
static get gravity() {
|
|
46
|
+
return Physics.acc;
|
|
47
|
+
}
|
|
48
|
+
static set gravity(v) {
|
|
49
|
+
Physics.acc = v;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Configures Excalibur to use "arcade" physics. Arcade physics which performs simple axis aligned arcade style physics.
|
|
53
|
+
*/
|
|
54
|
+
static useArcadePhysics() {
|
|
55
|
+
Physics.collisionResolutionStrategy = CollisionResolutionStrategy.Arcade;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Configures Excalibur to use rigid body physics. Rigid body physics allows for complicated
|
|
59
|
+
* simulated physical interactions.
|
|
60
|
+
*/
|
|
61
|
+
static useRealisticPhysics() {
|
|
62
|
+
Physics.collisionResolutionStrategy = CollisionResolutionStrategy.Realistic;
|
|
63
|
+
}
|
|
64
|
+
static get dynamicTreeVelocityMultiplyer() {
|
|
65
|
+
return Physics.dynamicTreeVelocityMultiplier;
|
|
66
|
+
}
|
|
67
|
+
static set dynamicTreeVelocityMultiplyer(value) {
|
|
68
|
+
Physics.dynamicTreeVelocityMultiplier = value;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Global acceleration that is applied to all vanilla actors that have a [[CollisionType.Active|active]] collision type.
|
|
73
|
+
* Global acceleration won't effect [[Label|labels]], [[ScreenElement|ui actors]], or [[Trigger|triggers]] in Excalibur.
|
|
74
|
+
*
|
|
75
|
+
* This is a great way to globally simulate effects like gravity.
|
|
76
|
+
*/
|
|
77
|
+
Physics.acc = new Vector(0, 0);
|
|
78
|
+
/**
|
|
79
|
+
* Globally switches all Excalibur physics behavior on or off.
|
|
80
|
+
*/
|
|
81
|
+
Physics.enabled = true;
|
|
82
|
+
/**
|
|
83
|
+
* Gets or sets the broadphase pair identification strategy.
|
|
84
|
+
*
|
|
85
|
+
* The default strategy is [[BroadphaseStrategy.DynamicAABBTree]] which uses a binary tree of axis-aligned bounding boxes to identify
|
|
86
|
+
* potential collision pairs which is O(nlog(n)) faster.
|
|
87
|
+
*/
|
|
88
|
+
Physics.broadphaseStrategy = BroadphaseStrategy.DynamicAABBTree;
|
|
89
|
+
/**
|
|
90
|
+
* Gets or sets the global collision resolution strategy (narrowphase).
|
|
91
|
+
*
|
|
92
|
+
* The default is [[CollisionResolutionStrategy.Arcade]] which performs simple axis aligned arcade style physics.
|
|
93
|
+
*
|
|
94
|
+
* More advanced rigid body physics are enabled by setting [[CollisionResolutionStrategy.Realistic]] which allows for complicated
|
|
95
|
+
* simulated physical interactions.
|
|
96
|
+
*/
|
|
97
|
+
Physics.collisionResolutionStrategy = CollisionResolutionStrategy.Arcade;
|
|
98
|
+
/**
|
|
99
|
+
* The default mass to use if none is specified
|
|
100
|
+
*/
|
|
101
|
+
Physics.defaultMass = 10;
|
|
102
|
+
/**
|
|
103
|
+
* Gets or sets the position and velocity positional integrator, currently only Euler is supported.
|
|
104
|
+
*/
|
|
105
|
+
Physics.integrator = Integrator.Euler;
|
|
106
|
+
/**
|
|
107
|
+
* Factor to add to the RigidBody BoundingBox, bounding box (dimensions += vel * dynamicTreeVelocityMultiplier);
|
|
108
|
+
*/
|
|
109
|
+
Physics.dynamicTreeVelocityMultiplier = 2;
|
|
110
|
+
/**
|
|
111
|
+
* Pad RigidBody BoundingBox by a constant amount
|
|
112
|
+
*/
|
|
113
|
+
Physics.boundsPadding = 5;
|
|
114
|
+
/**
|
|
115
|
+
* Number of position iterations (overlap) to run in the solver
|
|
116
|
+
*/
|
|
117
|
+
Physics.positionIterations = 3;
|
|
118
|
+
/**
|
|
119
|
+
* Number of velocity iteration (response) to run in the solver
|
|
120
|
+
*/
|
|
121
|
+
Physics.velocityIterations = 8;
|
|
122
|
+
/**
|
|
123
|
+
* Amount of overlap to tolerate in pixels
|
|
124
|
+
*/
|
|
125
|
+
Physics.slop = 1;
|
|
126
|
+
/**
|
|
127
|
+
* Amount of positional overlap correction to apply each position iteration of the solver
|
|
128
|
+
* O - meaning no correction, 1 - meaning correct all overlap
|
|
129
|
+
*/
|
|
130
|
+
Physics.steeringFactor = 0.2;
|
|
131
|
+
/**
|
|
132
|
+
* Warm start set to true re-uses impulses from previous frames back in the solver
|
|
133
|
+
*/
|
|
134
|
+
Physics.warmStart = true;
|
|
135
|
+
/**
|
|
136
|
+
* By default bodies do not sleep
|
|
137
|
+
*/
|
|
138
|
+
Physics.bodiesCanSleepByDefault = false;
|
|
139
|
+
/**
|
|
140
|
+
* Surface epsilon is used to help deal with surface penetration
|
|
141
|
+
*/
|
|
142
|
+
Physics.surfaceEpsilon = 0.1;
|
|
143
|
+
Physics.sleepEpsilon = 0.07;
|
|
144
|
+
Physics.wakeThreshold = Physics.sleepEpsilon * 3;
|
|
145
|
+
Physics.sleepBias = 0.9;
|
|
146
|
+
/**
|
|
147
|
+
* Enable fast moving body checking, this enables checking for collision pairs via raycast for fast moving objects to prevent
|
|
148
|
+
* bodies from tunneling through one another.
|
|
149
|
+
*/
|
|
150
|
+
Physics.checkForFastBodies = true;
|
|
151
|
+
/**
|
|
152
|
+
* Disable minimum fast moving body raycast, by default if ex.Physics.checkForFastBodies = true Excalibur will only check if the
|
|
153
|
+
* body is moving at least half of its minimum dimension in an update. If ex.Physics.disableMinimumSpeedForFastBody is set to true,
|
|
154
|
+
* Excalibur will always perform the fast body raycast regardless of speed.
|
|
155
|
+
*/
|
|
156
|
+
Physics.disableMinimumSpeedForFastBody = false;
|
|
157
|
+
__decorate([
|
|
158
|
+
obsolete({
|
|
159
|
+
message: 'Alias for incorrect spelling used in older versions, will be removed in v0.25.0',
|
|
160
|
+
alternateMethod: 'dynamicTreeVelocityMultiplier'
|
|
161
|
+
})
|
|
162
|
+
], Physics, "dynamicTreeVelocityMultiplyer", null);
|
|
163
|
+
//# sourceMappingURL=Physics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Physics.js","sourceRoot":"","sources":["../../../src/engine/Collision/Physics.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C;;;;;;;;GAQG;AACH,MAAM,CAAN,IAAY,2BAGX;AAHD,WAAY,2BAA2B;IACrC,gDAAiB,CAAA;IACjB,sDAAuB,CAAA;AACzB,CAAC,EAHW,2BAA2B,KAA3B,2BAA2B,QAGtC;AAED;;;;;GAKG;AACH,MAAM,CAAN,IAAY,kBAEX;AAFD,WAAY,kBAAkB;IAC5B,iFAAe,CAAA;AACjB,CAAC,EAFW,kBAAkB,KAAlB,kBAAkB,QAE7B;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,UAEX;AAFD,WAAY,UAAU;IACpB,6CAAK,CAAA;AACP,CAAC,EAFW,UAAU,KAAV,UAAU,QAErB;AAED;;GAEG;AACH,0BAA0B;AAC1B,MAAM,OAAO,OAAO;IAQX,MAAM,KAAK,OAAO;QACvB,OAAO,OAAO,CAAC,GAAG,CAAC;IACrB,CAAC;IACM,MAAM,KAAK,OAAO,CAAC,CAAS;QACjC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;IAClB,CAAC;IAiCD;;OAEG;IACI,MAAM,CAAC,gBAAgB;QAC5B,OAAO,CAAC,2BAA2B,GAAG,2BAA2B,CAAC,MAAM,CAAC;IAC3E,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,mBAAmB;QAC/B,OAAO,CAAC,2BAA2B,GAAG,2BAA2B,CAAC,SAAS,CAAC;IAC9E,CAAC;IAWM,MAAM,KAAK,6BAA6B;QAC7C,OAAO,OAAO,CAAC,6BAA6B,CAAC;IAC/C,CAAC;IAEM,MAAM,KAAK,6BAA6B,CAAC,KAAa;QAC3D,OAAO,CAAC,6BAA6B,GAAG,KAAK,CAAC;IAChD,CAAC;;AA3ED;;;;;GAKG;AACW,WAAG,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAQrC;;GAEG;AACW,eAAO,GAAG,IAAI,CAAC;AAE7B;;;;;GAKG;AACW,0BAAkB,GAAuB,kBAAkB,CAAC,eAAe,CAAC;AAE1F;;;;;;;GAOG;AACW,mCAA2B,GAAgC,2BAA2B,CAAC,MAAM,CAAC;AAC5G;;GAEG;AACW,mBAAW,GAAW,EAAE,CAAC;AACvC;;GAEG;AACW,kBAAU,GAAe,UAAU,CAAC,KAAK,CAAC;AAiBxD;;GAEG;AACW,qCAA6B,GAAG,CAAC,CAAC;AAchD;;GAEG;AACW,qBAAa,GAAG,CAAC,CAAC;AAEhC;;GAEG;AACW,0BAAkB,GAAG,CAAC,CAAC;AAErC;;GAEG;AACW,0BAAkB,GAAG,CAAC,CAAC;AAErC;;GAEG;AACW,YAAI,GAAG,CAAC,CAAC;AAEvB;;;GAGG;AACW,sBAAc,GAAG,GAAG,CAAC;AAEnC;;GAEG;AACW,iBAAS,GAAG,IAAI,CAAC;AAE/B;;GAEG;AACW,+BAAuB,GAAG,KAAK,CAAC;AAE9C;;GAEG;AACW,sBAAc,GAAG,GAAG,CAAC;AAErB,oBAAY,GAAG,IAAI,CAAC;AAEpB,qBAAa,GAAG,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;AAEzC,iBAAS,GAAG,GAAG,CAAC;AAE9B;;;GAGG;AACW,0BAAkB,GAAG,IAAI,CAAC;AAExC;;;;GAIG;AACW,sCAA8B,GAAG,KAAK,CAAC;AAlErD;IAJC,QAAQ,CAAC;QACR,OAAO,EAAE,iFAAiF;QAC1F,eAAe,EAAE,+BAA+B;KACjD,CAAC;kDAGD"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Vector } from '../Math/vector';
|
|
2
|
+
/**
|
|
3
|
+
* An enum that describes the sides of an axis aligned box for collision
|
|
4
|
+
*/
|
|
5
|
+
export var Side;
|
|
6
|
+
(function (Side) {
|
|
7
|
+
Side["None"] = "None";
|
|
8
|
+
Side["Top"] = "Top";
|
|
9
|
+
Side["Bottom"] = "Bottom";
|
|
10
|
+
Side["Left"] = "Left";
|
|
11
|
+
Side["Right"] = "Right";
|
|
12
|
+
})(Side || (Side = {}));
|
|
13
|
+
(function (Side) {
|
|
14
|
+
/**
|
|
15
|
+
* Returns the opposite side from the current
|
|
16
|
+
*/
|
|
17
|
+
function getOpposite(side) {
|
|
18
|
+
if (side === Side.Top) {
|
|
19
|
+
return Side.Bottom;
|
|
20
|
+
}
|
|
21
|
+
if (side === Side.Bottom) {
|
|
22
|
+
return Side.Top;
|
|
23
|
+
}
|
|
24
|
+
if (side === Side.Left) {
|
|
25
|
+
return Side.Right;
|
|
26
|
+
}
|
|
27
|
+
if (side === Side.Right) {
|
|
28
|
+
return Side.Left;
|
|
29
|
+
}
|
|
30
|
+
return Side.None;
|
|
31
|
+
}
|
|
32
|
+
Side.getOpposite = getOpposite;
|
|
33
|
+
/**
|
|
34
|
+
* Given a vector, return the Side most in that direction (via dot product)
|
|
35
|
+
*/
|
|
36
|
+
function fromDirection(direction) {
|
|
37
|
+
const directions = [Vector.Left, Vector.Right, Vector.Up, Vector.Down];
|
|
38
|
+
const directionEnum = [Side.Left, Side.Right, Side.Top, Side.Bottom];
|
|
39
|
+
let max = -Number.MAX_VALUE;
|
|
40
|
+
let maxIndex = -1;
|
|
41
|
+
for (let i = 0; i < directions.length; i++) {
|
|
42
|
+
if (directions[i].dot(direction) > max) {
|
|
43
|
+
max = directions[i].dot(direction);
|
|
44
|
+
maxIndex = i;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return directionEnum[maxIndex];
|
|
48
|
+
}
|
|
49
|
+
Side.fromDirection = fromDirection;
|
|
50
|
+
})(Side || (Side = {}));
|
|
51
|
+
//# sourceMappingURL=Side.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Side.js","sourceRoot":"","sources":["../../../src/engine/Collision/Side.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC;;GAEG;AACH,MAAM,CAAN,IAAY,IAMX;AAND,WAAY,IAAI;IACd,qBAAa,CAAA;IACb,mBAAW,CAAA;IACX,yBAAiB,CAAA;IACjB,qBAAa,CAAA;IACb,uBAAe,CAAA;AACjB,CAAC,EANW,IAAI,KAAJ,IAAI,QAMf;AAED,WAAc,IAAI;IAChB;;OAEG;IACH,SAAgB,WAAW,CAAC,IAAU;QACpC,IAAI,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE;YACrB,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QACD,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE;YACxB,OAAO,IAAI,CAAC,GAAG,CAAC;SACjB;QACD,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;YACtB,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;QACD,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;YACvB,OAAO,IAAI,CAAC,IAAI,CAAC;SAClB;QAED,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAfe,gBAAW,cAe1B,CAAA;IAED;;OAEG;IACH,SAAgB,aAAa,CAAC,SAAiB;QAC7C,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAErE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;QAC5B,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,EAAE;gBACtC,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACnC,QAAQ,GAAG,CAAC,CAAC;aACd;SACF;QACD,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAbe,kBAAa,gBAa5B,CAAA;AACH,CAAC,EAtCa,IAAI,KAAJ,IAAI,QAsCjB"}
|