excalibur 0.33.0-alpha.21 → 0.33.0-alpha.223
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/.git-blame-ignore-revs +2 -1
- package/.gitmodules +3 -0
- package/.nvmrc +1 -1
- package/CHANGELOG.md +183 -8
- package/build/dist/{Actions/Action/ActionSequence.d.ts → actions/action/action-sequence.d.ts} +3 -3
- package/build/dist/{Actions/Action/Blink.d.ts → actions/action/blink.d.ts} +2 -2
- package/build/dist/{Actions/Action/CallMethod.d.ts → actions/action/call-method.d.ts} +1 -1
- package/build/dist/{Actions/Action/CurveBy.d.ts → actions/action/curve-by.d.ts} +3 -3
- package/build/dist/{Actions/Action/CurveTo.d.ts → actions/action/curve-to.d.ts} +3 -3
- package/build/dist/{Actions/Action/Delay.d.ts → actions/action/delay.d.ts} +1 -1
- package/build/dist/{Actions/Action/Die.d.ts → actions/action/die.d.ts} +2 -2
- package/build/dist/{Actions/Action/EaseBy.d.ts → actions/action/ease-by.d.ts} +2 -2
- package/build/dist/{Actions/Action/EaseTo.d.ts → actions/action/ease-to.d.ts} +2 -2
- package/build/dist/{Actions/Action/Fade.d.ts → actions/action/fade.d.ts} +2 -2
- package/build/dist/{Actions/Action/Flash.d.ts → actions/action/flash.d.ts} +3 -3
- package/build/dist/{Actions/Action/Follow.d.ts → actions/action/follow.d.ts} +2 -2
- package/build/dist/{Actions/Action/Meet.d.ts → actions/action/meet.d.ts} +2 -2
- package/build/dist/{Actions/Action/MoveBy.d.ts → actions/action/move-by.d.ts} +5 -8
- package/build/dist/{Actions/Action/MoveTo.d.ts → actions/action/move-to.d.ts} +5 -8
- package/build/dist/{Actions/Action/ParallelActions.d.ts → actions/action/parallel-actions.d.ts} +2 -2
- package/build/dist/{Actions/Action/RepeatForever.d.ts → actions/action/repeat-forever.d.ts} +3 -3
- package/build/dist/{Actions/Action/Repeat.d.ts → actions/action/repeat.d.ts} +3 -3
- package/build/dist/{Actions/Action/RotateBy.d.ts → actions/action/rotate-by.d.ts} +12 -6
- package/build/dist/{Actions/Action/RotateTo.d.ts → actions/action/rotate-to.d.ts} +3 -3
- package/build/dist/{Actions/Action/ScaleBy.d.ts → actions/action/scale-by.d.ts} +3 -3
- package/build/dist/{Actions/Action/ScaleTo.d.ts → actions/action/scale-to.d.ts} +3 -3
- package/build/dist/{Actions/ActionContext.d.ts → actions/action-context.d.ts} +23 -57
- package/build/dist/{Actions/ActionQueue.d.ts → actions/action-queue.d.ts} +2 -2
- package/build/dist/{Actions/Action.d.ts → actions/action.d.ts} +1 -1
- package/build/dist/{Actions/Actionable.d.ts → actions/actionable.d.ts} +1 -1
- package/build/dist/{Actions/ActionsComponent.d.ts → actions/actions-component.d.ts} +16 -54
- package/build/dist/{Actions/ActionsSystem.d.ts → actions/actions-system.d.ts} +3 -3
- package/build/dist/actions/index.d.ts +25 -0
- package/build/dist/{Actor.d.ts → actor.d.ts} +58 -56
- package/build/dist/{Camera.d.ts → camera.d.ts} +24 -21
- package/build/dist/{Collision/BodyComponent.d.ts → collision/body-component.d.ts} +51 -33
- package/build/dist/{Collision/BoundingBox.d.ts → collision/bounding-box.d.ts} +8 -15
- package/build/dist/{Collision/ColliderComponent.d.ts → collision/collider-component.d.ts} +89 -13
- package/build/dist/{Collision/Colliders/CircleCollider.d.ts → collision/colliders/circle-collider.d.ts} +19 -11
- package/build/dist/{Collision/Colliders/ClosestLineJumpTable.d.ts → collision/colliders/closest-line-jump-table.d.ts} +5 -5
- package/build/dist/{Collision/Colliders/Collider.d.ts → collision/colliders/collider.d.ts} +22 -16
- package/build/dist/{Collision/Colliders/CollisionJumpTable.d.ts → collision/colliders/collision-jump-table.d.ts} +7 -6
- package/build/dist/{Collision/Colliders/CompositeCollider.d.ts → collision/colliders/composite-collider.d.ts} +14 -13
- package/build/dist/{Collision/Colliders/EdgeCollider.d.ts → collision/colliders/edge-collider.d.ts} +35 -11
- package/build/dist/{Collision/Colliders/PolygonCollider.d.ts → collision/colliders/polygon-collider.d.ts} +34 -11
- package/build/dist/collision/colliders/sat-shape.d.ts +27 -0
- package/build/dist/{Collision/Colliders/SeparatingAxis.d.ts → collision/colliders/separating-axis.d.ts} +16 -11
- package/build/dist/collision/colliders/shape.d.ts +102 -0
- package/build/dist/{Collision/CollisionSystem.d.ts → collision/collision-system.d.ts} +14 -9
- package/build/dist/{Collision/Detection/CollisionContact.d.ts → collision/detection/collision-contact.d.ts} +10 -4
- package/build/dist/{Collision/Detection/CollisionProcessor.d.ts → collision/detection/collision-processor.d.ts} +10 -10
- package/build/dist/{Collision/Detection/DynamicTreeCollisionProcessor.d.ts → collision/detection/dynamic-tree-collision-processor.d.ts} +13 -13
- package/build/dist/{Collision/Detection/DynamicTree.d.ts → collision/detection/dynamic-tree.d.ts} +14 -16
- package/build/dist/{Collision/Detection/Pair.d.ts → collision/detection/pair.d.ts} +12 -3
- package/build/dist/{Collision/Detection/QuadTree.d.ts → collision/detection/quad-tree.d.ts} +4 -4
- package/build/dist/{Collision/Detection/RayCastHit.d.ts → collision/detection/ray-cast-hit.d.ts} +3 -3
- package/build/dist/{Collision/Detection/RayCastOptions.d.ts → collision/detection/ray-cast-options.d.ts} +2 -2
- package/build/dist/{Collision/Detection/SparseHashGridCollisionProcessor.d.ts → collision/detection/sparse-hash-grid-collision-processor.d.ts} +22 -17
- package/build/dist/{Collision/Detection/SparseHashGrid.d.ts → collision/detection/sparse-hash-grid.d.ts} +14 -6
- package/build/dist/{Collision/Group/CollisionGroupManager.d.ts → collision/group/collision-group-manager.d.ts} +2 -2
- package/build/dist/collision/index.d.ts +39 -0
- package/build/dist/{Collision/Integrator.d.ts → collision/integrator.d.ts} +3 -3
- package/build/dist/{Collision/Island.d.ts → collision/island.d.ts} +2 -2
- package/build/dist/{Collision/MotionSystem.d.ts → collision/motion-system.d.ts} +5 -5
- package/build/dist/{Collision/PhysicsConfig.d.ts → collision/physics-config.d.ts} +12 -5
- package/build/dist/collision/physics-world.d.ts +74 -0
- package/build/dist/{Collision/Side.d.ts → collision/side.d.ts} +1 -1
- package/build/dist/{Collision/Solver/ArcadeSolver.d.ts → collision/solver/arcade-solver.d.ts} +4 -4
- package/build/dist/{Collision/Solver/ContactConstraintPoint.d.ts → collision/solver/contact-constraint-point.d.ts} +2 -2
- package/build/dist/collision/solver/realistic-solver.d.ts +50 -0
- package/build/dist/{Collision/Solver/Solver.d.ts → collision/solver/solver.d.ts} +5 -3
- package/build/dist/{Color.d.ts → color.d.ts} +43 -3
- package/build/dist/{Debug/DebugConfig.d.ts → debug/debug-config.d.ts} +21 -5
- package/build/dist/{Debug/DebugFlags.d.ts → debug/debug-flags.d.ts} +2 -2
- package/build/dist/{Debug/DebugSystem.d.ts → debug/debug-system.d.ts} +4 -4
- package/build/dist/debug/index.d.ts +3 -0
- package/build/dist/{Director/CrossFade.d.ts → director/cross-fade.d.ts} +5 -5
- package/build/dist/{Director/DefaultLoader.d.ts → director/default-loader.d.ts} +5 -5
- package/build/dist/{Director/Director.d.ts → director/director.d.ts} +13 -8
- package/build/dist/{Director/FadeInOut.d.ts → director/fade-in-out.d.ts} +5 -5
- package/build/dist/director/index.d.ts +7 -0
- package/build/dist/{Director/Loader.d.ts → director/loader.d.ts} +9 -9
- package/build/dist/{Director/Slide.d.ts → director/slide.d.ts} +6 -6
- package/build/dist/{Director/Transition.d.ts → director/transition.d.ts} +7 -10
- package/build/dist/{Engine.d.ts → engine.d.ts} +89 -39
- package/build/dist/{EntityComponentSystem/Component.d.ts → entity-component-system/component.d.ts} +8 -2
- package/build/dist/{EntityComponentSystem/Components/MotionComponent.d.ts → entity-component-system/components/motion-component.d.ts} +3 -2
- package/build/dist/entity-component-system/components/pause-component.d.ts +11 -0
- package/build/dist/{EntityComponentSystem/Components/TagsComponent.d.ts → entity-component-system/components/tags-component.d.ts} +2 -1
- package/build/dist/{EntityComponentSystem/Components/TransformComponent.d.ts → entity-component-system/components/transform-component.d.ts} +30 -6
- package/build/dist/{EntityComponentSystem/EntityManager.d.ts → entity-component-system/entity-manager.d.ts} +3 -3
- package/build/dist/{EntityComponentSystem/Entity.d.ts → entity-component-system/entity.d.ts} +12 -22
- package/build/dist/entity-component-system/index.d.ts +13 -0
- package/build/dist/{EntityComponentSystem/QueryManager.d.ts → entity-component-system/query-manager.d.ts} +5 -5
- package/build/dist/{EntityComponentSystem/Query.d.ts → entity-component-system/query.d.ts} +4 -4
- package/build/dist/{EntityComponentSystem/SystemManager.d.ts → entity-component-system/system-manager.d.ts} +4 -4
- package/build/dist/{EntityComponentSystem/System.d.ts → entity-component-system/system.d.ts} +9 -2
- package/build/dist/{EntityComponentSystem/World.d.ts → entity-component-system/world.d.ts} +10 -14
- package/build/dist/{Events/MediaEvents.d.ts → events/media-events.d.ts} +6 -6
- package/build/dist/{Events/PointerEvents.d.ts → events/pointer-events.d.ts} +3 -3
- package/build/dist/{Events.d.ts → events.d.ts} +37 -17
- package/build/dist/excalibur.development.js +36732 -34114
- package/build/dist/excalibur.js +36732 -34114
- package/build/dist/excalibur.min.development.js +197 -88
- package/build/dist/excalibur.min.js +197 -88
- package/build/dist/{Graphics/Animation.d.ts → graphics/animation.d.ts} +20 -10
- package/build/dist/{Graphics/Canvas.d.ts → graphics/canvas.d.ts} +3 -3
- package/build/dist/{Graphics/Circle.d.ts → graphics/circle.d.ts} +2 -2
- package/build/dist/{Graphics/Context → graphics/context}/circle-renderer/circle-renderer.d.ts +8 -3
- package/build/dist/{Graphics/Context → graphics/context}/debug-circle-renderer/debug-circle-renderer.d.ts +3 -3
- package/build/dist/{Graphics/Context → graphics/context}/debug-line-renderer/debug-line-renderer.d.ts +3 -3
- package/build/dist/{Graphics/Context → graphics/context}/debug-point-renderer/debug-point-renderer.d.ts +3 -3
- package/build/dist/graphics/context/debug-text.d.ts +40 -0
- package/build/dist/{Graphics/Context → graphics/context}/draw-call.d.ts +2 -2
- package/build/dist/{Graphics/Context/ExcaliburGraphicsContext2DCanvas.d.ts → graphics/context/excalibur-graphics-context-2d-canvas.d.ts} +16 -7
- package/build/dist/{Graphics/Context/ExcaliburGraphicsContextWebGL.d.ts → graphics/context/excalibur-graphics-context-webgl.d.ts} +49 -12
- package/build/dist/{Graphics/Context/ExcaliburGraphicsContext.d.ts → graphics/context/excalibur-graphics-context.d.ts} +114 -10
- package/build/dist/graphics/context/framebuffer.d.ts +154 -0
- package/build/dist/graphics/context/glsl.d.ts +47 -0
- package/build/dist/{Graphics/Context → graphics/context}/image-renderer/image-renderer.d.ts +2 -2
- package/build/dist/{Graphics/Context → graphics/context}/image-renderer-v2/image-renderer-v2.d.ts +2 -2
- package/build/dist/{Graphics/Context → graphics/context}/material-renderer/material-renderer.d.ts +3 -2
- package/build/dist/graphics/context/material.d.ts +189 -0
- package/build/dist/{Graphics/Context → graphics/context}/particle-renderer/particle-renderer.d.ts +2 -2
- package/build/dist/{Graphics/Context → graphics/context}/rectangle-renderer/rectangle-renderer.d.ts +3 -3
- package/build/dist/{Graphics/Context → graphics/context}/renderer.d.ts +1 -1
- package/build/dist/{Graphics/Context → graphics/context}/screen-pass-painter/screen-pass-painter.d.ts +2 -2
- package/build/dist/graphics/context/shader-pipeline/effects/bloom-effect.d.ts +74 -0
- package/build/dist/graphics/context/shader-pipeline/effects/blur-passes.d.ts +70 -0
- package/build/dist/graphics/context/shader-pipeline/effects/glow-passes.d.ts +88 -0
- package/build/dist/graphics/context/shader-pipeline/shader-pass.d.ts +136 -0
- package/build/dist/graphics/context/shader-pipeline/shader-pipeline.d.ts +80 -0
- package/build/dist/{Graphics/Context → graphics/context}/shader.d.ts +11 -4
- package/build/dist/{Graphics/Context → graphics/context}/state-stack.d.ts +2 -2
- package/build/dist/{Graphics/Context → graphics/context}/texture-loader.d.ts +5 -5
- package/build/dist/{Graphics/Context → graphics/context}/transform-stack.d.ts +1 -1
- package/build/dist/{Graphics/Context → graphics/context}/webgl-util.d.ts +2 -2
- package/build/dist/{Graphics/DebugGraphicsComponent.d.ts → graphics/debug-graphics-component.d.ts} +4 -3
- package/build/dist/{Graphics/Debug.d.ts → graphics/debug.d.ts} +6 -6
- package/build/dist/{Graphics/FontCache.d.ts → graphics/font-cache.d.ts} +4 -4
- package/build/dist/{Graphics/FontCommon.d.ts → graphics/font-common.d.ts} +6 -6
- package/build/dist/{Graphics/FontTextInstance.d.ts → graphics/font-text-instance.d.ts} +29 -8
- package/build/dist/{Graphics/Font.d.ts → graphics/font.d.ts} +12 -11
- package/build/dist/{Graphics/Graphic.d.ts → graphics/graphic.d.ts} +5 -5
- package/build/dist/{Graphics/GraphicsComponent.d.ts → graphics/graphics-component.d.ts} +83 -18
- package/build/dist/{Graphics/GraphicsGroup.d.ts → graphics/graphics-group.d.ts} +12 -6
- package/build/dist/{Graphics/GraphicsSystem.d.ts → graphics/graphics-system.d.ts} +5 -5
- package/build/dist/{Graphics/ImageSource.d.ts → graphics/image-source.d.ts} +7 -6
- package/build/dist/graphics/index.d.ts +55 -0
- package/build/dist/{Graphics/Line.d.ts → graphics/line.d.ts} +5 -5
- package/build/dist/{Graphics/NineSlice.d.ts → graphics/nine-slice.d.ts} +5 -5
- package/build/dist/{Graphics/OffscreenSystem.d.ts → graphics/offscreen-system.d.ts} +5 -5
- package/build/dist/graphics/parallax-component.d.ts +7 -0
- package/build/dist/{Graphics/Polygon.d.ts → graphics/polygon.d.ts} +3 -3
- package/build/dist/{Graphics/PostProcessor/ColorBlindnessPostProcessor.d.ts → graphics/post-processor/color-blindness-post-processor.d.ts} +6 -8
- package/build/dist/graphics/post-processor/post-processor.d.ts +66 -0
- package/build/dist/{Graphics/PostProcessor/ScreenShader.d.ts → graphics/post-processor/screen-shader.d.ts} +3 -3
- package/build/dist/graphics/post-processor/shader-pipeline-post-processor.d.ts +45 -0
- package/build/dist/{Graphics/Raster.d.ts → graphics/raster.d.ts} +6 -6
- package/build/dist/{Graphics/Rectangle.d.ts → graphics/rectangle.d.ts} +2 -2
- package/build/dist/{Graphics/SpriteFont.d.ts → graphics/sprite-font.d.ts} +8 -8
- package/build/dist/{Graphics/SpriteSheet.d.ts → graphics/sprite-sheet.d.ts} +7 -7
- package/build/dist/{Graphics/Sprite.d.ts → graphics/sprite.d.ts} +4 -4
- package/build/dist/{Graphics/Text.d.ts → graphics/text.d.ts} +7 -7
- package/build/dist/{Graphics/TiledAnimation.d.ts → graphics/tiled-animation.d.ts} +7 -7
- package/build/dist/{Graphics/TiledSprite.d.ts → graphics/tiled-sprite.d.ts} +7 -7
- package/build/dist/{Graphics/TransformInterpolation.d.ts → graphics/transform-interpolation.d.ts} +1 -1
- package/build/dist/index.d.ts +68 -66
- package/build/dist/{Input/Gamepad.d.ts → input/gamepad.d.ts} +7 -10
- package/build/dist/{Input/InputHost.d.ts → input/input-host.d.ts} +5 -5
- package/build/dist/{Input/InputMapper.d.ts → input/input-mapper.d.ts} +3 -3
- package/build/dist/{Input/Keyboard.d.ts → input/keyboard.d.ts} +6 -6
- package/build/dist/{Input/PointerAbstraction.d.ts → input/pointer-abstraction.d.ts} +5 -5
- package/build/dist/{Input/PointerComponent.d.ts → input/pointer-component.d.ts} +3 -2
- package/build/dist/{Input/PointerEventReceiver.d.ts → input/pointer-event-receiver.d.ts} +11 -8
- package/build/dist/{Input/PointerEvent.d.ts → input/pointer-event.d.ts} +4 -4
- package/build/dist/{Input/PointerEventsToObjectDispatcher.d.ts → input/pointer-events-to-object-dispatcher.d.ts} +3 -3
- package/build/dist/{Input/PointerSystem.d.ts → input/pointer-system.d.ts} +4 -4
- package/build/dist/{Input/WheelEvent.d.ts → input/wheel-event.d.ts} +1 -1
- package/build/dist/{Interfaces/AudioImplementation.d.ts → interfaces/audio-implementation.d.ts} +1 -1
- package/build/dist/{Interfaces/Evented.d.ts → interfaces/evented.d.ts} +1 -1
- package/build/dist/interfaces/index.d.ts +7 -0
- package/build/dist/{Interfaces/LifecycleEvents.d.ts → interfaces/lifecycle-events.d.ts} +4 -4
- package/build/dist/{Interfaces/PointerEventHandlers.d.ts → interfaces/pointer-event-handlers.d.ts} +3 -3
- package/build/dist/{Label.d.ts → label.d.ts} +8 -8
- package/build/dist/lighting/cone-light-component.d.ts +47 -0
- package/build/dist/lighting/darkness-component.d.ts +34 -0
- package/build/dist/lighting/flicker-options.d.ts +17 -0
- package/build/dist/lighting/flicker-system.d.ts +19 -0
- package/build/dist/lighting/index.d.ts +8 -0
- package/build/dist/lighting/light-occluder-component.d.ts +66 -0
- package/build/dist/lighting/lighting-config.d.ts +47 -0
- package/build/dist/lighting/lighting-system.d.ts +153 -0
- package/build/dist/lighting/point-light-component.d.ts +46 -0
- package/build/dist/{Math → math}/affine-matrix.d.ts +1 -1
- package/build/dist/math/coord-plane.d.ts +52 -0
- package/build/dist/{Math → math}/global-coordinates.d.ts +1 -1
- package/build/dist/{Math → math}/graph.d.ts +14 -3
- package/build/dist/{Math → math}/index.d.ts +1 -1
- package/build/dist/{Math → math}/line-segment.d.ts +1 -1
- package/build/dist/{Math → math}/ray.d.ts +1 -1
- package/build/dist/{Math → math}/transform.d.ts +9 -0
- package/build/dist/{Math → math}/util.d.ts +1 -1
- package/build/dist/{Math → math}/vector.d.ts +8 -14
- package/build/dist/{Particles/GpuParticleEmitter.d.ts → particles/gpu-particle-emitter.d.ts} +11 -11
- package/build/dist/{Particles/GpuParticleRenderer.d.ts → particles/gpu-particle-renderer.d.ts} +5 -5
- package/build/dist/particles/index.d.ts +5 -0
- package/build/dist/{Particles/ParticleEmitter.d.ts → particles/particle-emitter.d.ts} +6 -6
- package/build/dist/{Particles/Particles.d.ts → particles/particles.d.ts} +18 -12
- package/build/dist/plugin.d.ts +253 -0
- package/build/dist/{Resources/Font.d.ts → resources/font.d.ts} +4 -4
- package/build/dist/{Resources/Gif.d.ts → resources/gif.d.ts} +5 -5
- package/build/dist/resources/index.d.ts +4 -0
- package/build/dist/{Resources/Resource.d.ts → resources/resource.d.ts} +11 -3
- package/build/dist/resources/sound/index.d.ts +4 -0
- package/build/dist/{Resources/Sound/SoundManager.d.ts → resources/sound/sound-manager.d.ts} +1 -1
- package/build/dist/{Resources/Sound/Sound.d.ts → resources/sound/sound.d.ts} +13 -9
- package/build/dist/{Resources/Sound/WebAudioInstance.d.ts → resources/sound/web-audio-instance.d.ts} +1 -1
- package/build/dist/{Scene.d.ts → scene.d.ts} +36 -24
- package/build/dist/{ScreenElement.d.ts → screen-element.d.ts} +4 -4
- package/build/dist/{Screen.d.ts → screen.d.ts} +103 -35
- package/build/dist/tile-map/index.d.ts +4 -0
- package/build/dist/{TileMap/IsometricEntityComponent.d.ts → tile-map/isometric-entity-component.d.ts} +3 -2
- package/build/dist/tile-map/isometric-entity-system.d.ts +12 -0
- package/build/dist/{TileMap/IsometricMap.d.ts → tile-map/isometric-map.d.ts} +13 -23
- package/build/dist/{TileMap/TileMap.d.ts → tile-map/tile-map.d.ts} +31 -18
- package/build/dist/{Timer.d.ts → timer.d.ts} +6 -9
- package/build/dist/{Trigger.d.ts → trigger.d.ts} +6 -6
- package/build/dist/{Util/Pool.d.ts → util/arena-pool.d.ts} +15 -4
- package/build/dist/{Util/Browser.d.ts → util/browser.d.ts} +8 -0
- package/build/dist/{Util/Clock.d.ts → util/clock.d.ts} +1 -1
- package/build/dist/{Util/Coroutine.d.ts → util/coroutine.d.ts} +2 -2
- package/build/dist/{Util/Detector.d.ts → util/detector.d.ts} +1 -1
- package/build/dist/{Util/DrawUtil.d.ts → util/draw-util.d.ts} +4 -4
- package/build/dist/util/index.d.ts +6 -0
- package/build/dist/{Util/Log.d.ts → util/log.d.ts} +3 -3
- package/build/dist/util/pause-system.d.ts +18 -0
- package/build/dist/{Util/RentalPool.d.ts → util/rental-pool.d.ts} +1 -0
- package/build/dist/util/serializer.d.ts +128 -0
- package/build/dist/{Util/Sound.d.ts → util/sound.d.ts} +1 -0
- package/build/dist/{Util/StateMachine.d.ts → util/state-machine.d.ts} +1 -1
- package/build/dist/util/string.d.ts +6 -0
- package/build/dist/{Util/Util.d.ts → util/util.d.ts} +2 -2
- package/build/esm/excalibur.development.js +36146 -33987
- package/build/esm/excalibur.js +36146 -33987
- package/build/esm/excalibur.min.development.js +17801 -23031
- package/build/esm/excalibur.min.js +17801 -23031
- package/eslint.config.mjs +6 -11
- package/package.json +33 -38
- package/vite.config.common.js +1 -1
- package/vite.config.ts +2 -1
- package/vitest.config.ts +4 -4
- package/.devcontainer/devcontainer.json +0 -26
- package/.husky/pre-commit +0 -1
- package/build/dist/Actions/index.d.ts +0 -27
- package/build/dist/Collision/Colliders/Shape.d.ts +0 -52
- package/build/dist/Collision/Index.d.ts +0 -38
- package/build/dist/Collision/PhysicsWorld.d.ts +0 -73
- package/build/dist/Collision/Solver/RealisticSolver.d.ts +0 -28
- package/build/dist/Debug/index.d.ts +0 -3
- package/build/dist/Director/index.d.ts +0 -7
- package/build/dist/EntityComponentSystem/TagQuery.d.ts +0 -28
- package/build/dist/EntityComponentSystem/index.d.ts +0 -13
- package/build/dist/Graphics/Context/debug-text.d.ts +0 -28
- package/build/dist/Graphics/Context/material.d.ts +0 -102
- package/build/dist/Graphics/Context/render-source.d.ts +0 -7
- package/build/dist/Graphics/Context/render-target.d.ts +0 -60
- package/build/dist/Graphics/ParallaxComponent.d.ts +0 -6
- package/build/dist/Graphics/PostProcessor/PostProcessor.d.ts +0 -36
- package/build/dist/Graphics/index.d.ts +0 -47
- package/build/dist/Interfaces/Index.d.ts +0 -7
- package/build/dist/Math/coord-plane.d.ts +0 -15
- package/build/dist/Particles/index.d.ts +0 -5
- package/build/dist/Resources/Index.d.ts +0 -4
- package/build/dist/Resources/Sound/Index.d.ts +0 -4
- package/build/dist/TileMap/IsometricEntitySystem.d.ts +0 -12
- package/build/dist/TileMap/index.d.ts +0 -4
- package/build/dist/Util/Decorators.d.ts +0 -15
- package/build/dist/Util/EasingFunctions.d.ts +0 -89
- package/build/dist/Util/Index.d.ts +0 -6
- package/deno.json +0 -10
- package/playground/README.md +0 -71
- package/playground/index.html +0 -75
- package/playground/package-lock.json +0 -1954
- package/playground/package.json +0 -27
- package/playground/public/favicon.ico +0 -0
- package/playground/public/icon.png +0 -0
- package/playground/public/logo-white@2x.png +0 -0
- package/playground/public/logo@2x.png +0 -0
- package/playground/public/player-run.png +0 -0
- package/playground/public/rpg-audio/License.txt +0 -21
- package/playground/public/rpg-audio/audio/handleCoins.ogg +0 -0
- package/playground/public/social.jpg +0 -0
- package/playground/public/social.png +0 -0
- package/playground/public/tiny-town/License.txt +0 -22
- package/playground/public/tiny-town/tilemap/tilemap.png +0 -0
- package/playground/tsconfig.json +0 -26
- package/playground/tsdown.config.ts +0 -13
- package/playground/vite.config.ts +0 -5
- /package/build/dist/{Collision/CollisionType.d.ts → collision/collision-type.d.ts} +0 -0
- /package/build/dist/{Collision/Detection/SpatialPartitionStrategy.d.ts → collision/detection/spatial-partition-strategy.d.ts} +0 -0
- /package/build/dist/{Collision/Group/CollisionGroup.d.ts → collision/group/collision-group.d.ts} +0 -0
- /package/build/dist/{Collision/Solver/ContactBias.d.ts → collision/solver/contact-bias.d.ts} +0 -0
- /package/build/dist/{Collision/SolverStrategy.d.ts → collision/solver-strategy.d.ts} +0 -0
- /package/build/dist/{Context.d.ts → context.d.ts} +0 -0
- /package/build/dist/{Deprecated.d.ts → deprecated.d.ts} +0 -0
- /package/build/dist/{EntityComponentSystem/Priority.d.ts → entity-component-system/priority.d.ts} +0 -0
- /package/build/dist/{EntityComponentSystem/Types.d.ts → entity-component-system/types.d.ts} +0 -0
- /package/build/dist/{EventEmitter.d.ts → event-emitter.d.ts} +0 -0
- /package/build/dist/{Events/ExEvent.d.ts → events/ex-event.d.ts} +0 -0
- /package/build/dist/{Flags.d.ts → flags.d.ts} +0 -0
- /package/build/dist/{GarbageCollector.d.ts → garbage-collector.d.ts} +0 -0
- /package/build/dist/{Graphics/Context → graphics/context}/quad-index-buffer.d.ts +0 -0
- /package/build/dist/{Graphics/Context → graphics/context}/uniform-buffer.d.ts +0 -0
- /package/build/dist/{Graphics/Context → graphics/context}/vertex-buffer.d.ts +0 -0
- /package/build/dist/{Graphics/Context → graphics/context}/vertex-layout.d.ts +0 -0
- /package/build/dist/{Graphics/Filtering.d.ts → graphics/filtering.d.ts} +0 -0
- /package/build/dist/{Graphics/GraphicsDiagnostics.d.ts → graphics/graphics-diagnostics.d.ts} +0 -0
- /package/build/dist/{Graphics/PostProcessor/ColorBlindnessMode.d.ts → graphics/post-processor/color-blindness-mode.d.ts} +0 -0
- /package/build/dist/{Graphics/Wrapping.d.ts → graphics/wrapping.d.ts} +0 -0
- /package/build/dist/{Id.d.ts → id.d.ts} +0 -0
- /package/build/dist/{Input/CapturePointerConfig.d.ts → input/capture-pointer-config.d.ts} +0 -0
- /package/build/dist/{Input/NativePointerButton.d.ts → input/native-pointer-button.d.ts} +0 -0
- /package/build/dist/{Input/PointerButton.d.ts → input/pointer-button.d.ts} +0 -0
- /package/build/dist/{Input/PointerScope.d.ts → input/pointer-scope.d.ts} +0 -0
- /package/build/dist/{Input/PointerType.d.ts → input/pointer-type.d.ts} +0 -0
- /package/build/dist/{Input/WheelDeltaMode.d.ts → input/wheel-delta-mode.d.ts} +0 -0
- /package/build/dist/{Interfaces/Audio.d.ts → interfaces/audio.d.ts} +0 -0
- /package/build/dist/{Interfaces/Clonable.d.ts → interfaces/clonable.d.ts} +0 -0
- /package/build/dist/{Interfaces/Loadable.d.ts → interfaces/loadable.d.ts} +0 -0
- /package/build/dist/{Math → math}/bezier-curve.d.ts +0 -0
- /package/build/dist/{Math → math}/easings.d.ts +0 -0
- /package/build/dist/{Math → math}/lerp.d.ts +0 -0
- /package/build/dist/{Math → math}/matrix.d.ts +0 -0
- /package/build/dist/{Math → math}/projection.d.ts +0 -0
- /package/build/dist/{Math/Random.d.ts → math/random.d.ts} +0 -0
- /package/build/dist/{Math → math}/rotation-type.d.ts +0 -0
- /package/build/dist/{Math → math}/vector-view.d.ts +0 -0
- /package/build/dist/{Math → math}/watch-vector.d.ts +0 -0
- /package/build/dist/{Particles/EmitterType.d.ts → particles/emitter-type.d.ts} +0 -0
- /package/build/dist/{Polyfill.d.ts → polyfill.d.ts} +0 -0
- /package/build/dist/{Resources/Sound/AudioContext.d.ts → resources/sound/audio-context.d.ts} +0 -0
- /package/build/dist/{Util/Assert.d.ts → util/assert.d.ts} +0 -0
- /package/build/dist/{Util/Fps.d.ts → util/fps.d.ts} +0 -0
- /package/build/dist/{Util/Future.d.ts → util/future.d.ts} +0 -0
- /package/build/dist/{Util/IFrame.d.ts → util/iframe.d.ts} +0 -0
- /package/build/dist/{Util/Observable.d.ts → util/observable.d.ts} +0 -0
- /package/build/dist/{Util/Required.d.ts → util/required.d.ts} +0 -0
- /package/build/dist/{Util/Semaphore.d.ts → util/semaphore.d.ts} +0 -0
- /package/build/dist/{Util/Toaster.d.ts → util/toaster.d.ts} +0 -0
- /package/build/dist/{Util/Watch.d.ts → util/watch.d.ts} +0 -0
- /package/build/dist/{Util/WebAudio.d.ts → util/web-audio.d.ts} +0 -0
package/.git-blame-ignore-revs
CHANGED
package/.gitmodules
CHANGED
package/.nvmrc
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
24.
|
|
1
|
+
24.16.0
|
package/CHANGELOG.md
CHANGED
|
@@ -7,27 +7,195 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
### Breaking Changes
|
|
9
9
|
|
|
10
|
-
-
|
|
10
|
+
- Behavior change - Excalibur screen space is now consistently rooted at the top-left of the safe content area (`Screen.contentArea`) across the whole API. Previously the clipping display modes (`FitScreenAndFill`, `FitContainerAndFill`, `FitScreenAndZoom`, `FitContainerAndZoom`) disagreed about where screen space started: `CoordPlane.Screen` entities and pointer events were rooted at the content area's corner, but `Screen.worldToScreenCoordinates` returned raw canvas/resolution coordinates and `Screen.contentArea.left/top` carried the canvas-space inset. Every API now shares the single content-area-rooted definition, which fixes several pointer, transition, and `unsafeArea` bugs in the clipping display modes, but is a breaking change for code that relied on the old canvas-rooted values:
|
|
11
|
+
- `Screen.worldToScreenCoordinates(point)` now returns coordinates rooted at the content area (previously the raw camera projection in canvas/resolution coordinates). `Screen.screenToWorldCoordinates` is the exact inverse, as before.
|
|
12
|
+
- `Screen.contentArea` is now always rooted at `(0, 0)`, and `Screen.unsafeArea.topLeft` is negative by the clip amount. The canvas-space inset that `contentArea.left/top` used to carry is available from the new `Screen.contentAreaOffset`.
|
|
13
|
+
- Display modes that never clip (`Fixed`, `FitScreen`, `FillScreen`, `FitContainer`, `FillContainer`) have a `(0, 0)` offset and are unaffected.
|
|
14
|
+
|
|
15
|
+
If you need the old canvas-rooted values, for example to position an HTML overlay over the canvas, shim them by adding `Screen.contentAreaOffset` back:
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
// Before: worldToScreenCoordinates returned canvas coordinates
|
|
19
|
+
const canvasPos = engine.screen.worldToScreenCoordinates(actor.pos).add(engine.screen.contentAreaOffset);
|
|
20
|
+
|
|
21
|
+
// Before: contentArea.topLeft was the safe area corner in canvas coordinates
|
|
22
|
+
const safeAreaCorner = engine.screen.contentAreaOffset.clone();
|
|
23
|
+
```
|
|
24
|
+
- Behavior change - `rotateBy({angleRadiansOffset, duration})` with no `rotationType` now rotates by exactly the signed offset provided, preserving full and multiple turns, instead of taking the shortest path to the canonicalized target orientation. Offsets larger than `Math.PI` now travel in the direction of their sign (previously they rotated the shorter way around), and `2 * Math.PI` performs a full revolution (previously a no-op). Pass an explicit `rotationType` to keep path-based behavior
|
|
25
|
+
- Behavior change - TileMap now uses 'separate' as the `compositeStrategy` as a better default. Commonly TileMap is used to build levels, so this default aligns with the common use.
|
|
26
|
+
- Removed old legacy `ex.EasingFunctions` in favor of the [0, 1] common easing functions
|
|
27
|
+
- Removed EaseTo/EaseBy/actor.actions.(easeTo|easeBy) Action in favor of MoveTo/MoveBy/actor.actions.(moveTo|moveBy) Action with easing support
|
|
28
|
+
- Removed `body.sleeping` in favor of `isSleeping`
|
|
29
|
+
- Removed `entity.active` in favor of `isActive`
|
|
30
|
+
- Removed `actor.getGlobalPos()` in favor of `actor.globalPos` getter/setter
|
|
31
|
+
- Removed `actor.getGlobalRotation()` in favor of `actor.globalRotation` getter/setter
|
|
32
|
+
- Removed `actor.getGlobalScale()` in favor of `actor.globalScale` getter/setter
|
|
33
|
+
- Removed `BoundingBox.draw` in favor of `BoundingBox.debug`
|
|
34
|
+
- Removed typo in `engine.isFullScreen` now `engine.isFullscreen`
|
|
35
|
+
- Removed unused `tag-query.ts`
|
|
36
|
+
- Removed `world.queryTags`, `world.query(...)` can query tags
|
|
37
|
+
- Removed `Animation.durationPerFrameMs` in favor of `Animation.durationPerFrame`
|
|
38
|
+
- Removed `Vector.size` in favor of `Vector.magnitude`
|
|
39
|
+
- Behavior change - Font/Text now render more accurately and faster be using less texture space, this unfortunately is a breaking change becuase text will render slightly different.
|
|
40
|
+
- Build: Docusaurus now throws the build on broken markdown links, broken anchors, and broken markdown images instead of warning. Any custom docs/blog content must have valid internal links, anchors, and images.
|
|
41
|
+
- Build: The engine `tsconfig.json` now uses `module: "esnext"` with `moduleResolution: "bundler"` (previously `module: "es2015"` / `moduleResolution: "node"`), and `downlevelIteration` has been removed. The per-package `tsconfig.json` overrides in `director`, `entity-component-system`, `graphics`, and `resources` have been removed in favor of the single engine `tsconfig.json`. Consumers importing source directly may need bundler-compatible tooling.
|
|
42
|
+
- Build: TypeDoc runner has been replaced by `site/scripts/gen-typedoc-api.mjs`.
|
|
11
43
|
|
|
12
44
|
### Deprecated
|
|
13
45
|
|
|
14
|
-
-
|
|
46
|
+
- `ex.Pool` renamed to `ex.ArenaPool`
|
|
15
47
|
|
|
16
48
|
### Added
|
|
17
49
|
|
|
18
|
-
-
|
|
50
|
+
- Added an optional `System.dispose(world, scene)` lifecycle hook, called by the `SystemManager` when a system is removed after having been initialized — use it to release resources the system provisioned in `initialize` (entities it added, observable subscriptions, etc.). The `LightingSystem` uses it to remove its provisioned overlay and unsubscribe its component queries when lighting is disabled at runtime
|
|
51
|
+
- Added multipass **shader pipelines** for composing shader effects that need more than one pass (blur, bloom, glow), built on an explicit source→destination dataflow with no hidden bind state:
|
|
52
|
+
- New `ex.Framebuffer` and `ex.MultisampleFramebuffer` primitives that are both a render destination and a texture source (`framebuffer.texture`, `framebuffer.glFramebuffer`, `framebuffer.texelSize`), with `resize()`, `clear()`, and `dispose()`. These replace the internal (never exported) `RenderTarget`/`RenderSource` classes inside the WebGL context. Reading a `MultisampleFramebuffer.texture` resolves the MSAA samples automatically.
|
|
53
|
+
- New `ex.ShaderPass`: applies a fragment shader to an image, framebuffer, or texture and produces a new image — the building block for custom effects. `pass.draw(source, destination)` for the simple case, or `pass.draw({ sources: { u_smaller: quarterResolution, u_larger: halfResolution }, destination, uniforms })` for multiple named sampler sources and per-draw uniforms. Convention uniforms are provided (`u_image`, `u_resolution`, `u_texelSize`, `u_time_ms`, `u_elapsed_ms`) and fragments are authored with the `glsl` tag's straight-alpha conventions.
|
|
54
|
+
- New `ex.ShaderPipeline` linear chain (`source → pass0 → pass1 → ... → destination`) with per-pass `scale` for downsample/upsample and `u_original` bound for composite passes. Any object implementing `ex.ShaderPipelineLike` (`process(source, destination)`) can be used instead for custom non-linear graphs.
|
|
55
|
+
- `ex.Material` can now run multipass pipelines, with `MaterialOptions` typed as a union so only valid combinations compile:
|
|
56
|
+
- `fragmentSource` only — single-pass custom shading of the graphic, exactly as before
|
|
57
|
+
- `passes` only — run a multipass effect (fragment strings, `ShaderPass`es, or an effect object like `BloomEffect`) on the graphic offscreen; a default passthrough composite draws the result
|
|
58
|
+
- `passes` + `fragmentSource` — the fragment shader becomes the **final composite**: it draws the pipeline's output (bound as `u_graphic`) on screen, which is where screen-space work like `u_screen_texture` belongs
|
|
59
|
+
- `padding` (with `passes`) — extra transparent source pixels around the graphic so blur/glow halos are not clipped to the quad
|
|
60
|
+
- the material's custom `uniforms` and built-ins (`u_opacity`, `u_color`, `u_graphic_resolution`, `u_size`) are forwarded to every pass
|
|
61
|
+
- `ex.PostProcessor` is now built around a single `process(source, destination)` hook (`initialize` is optional, so `ShaderPipelineLike` effect objects can be added with `addPostProcessor` directly); the legacy `getShader`/`getLayout` single-pass path still works but is deprecated for removal in v1. `ex.ShaderPipelinePostProcessor` builds a fullscreen post processor from `passes` (mirroring `Material`: a list of fragment sources/`ShaderPass`es, or a `ShaderPipelineLike` effect), chaining with other post processors in order. `ColorBlindnessPostProcessor` is now implemented on `ShaderPass` internally.
|
|
62
|
+
- New built-in effects usable per-graphic or fullscreen, each a `ShaderPipelineLike` object with live-tunable settings:
|
|
63
|
+
- `ex.BlurEffect({ graphicsContext, scale, strength })` — separable gaussian blur, animate `blur.strength` any time
|
|
64
|
+
- `ex.GlowEffect({ graphicsContext, color, scale, strength, intensity })` — outer glow: the graphic's silhouette is tinted, blurred, and composited back under the original (pair with `Material` `padding` so the halo has room); `color`/`strength`/`intensity` are live properties
|
|
65
|
+
- `ex.BloomEffect({ graphicsContext, threshold, intensity, levels })` — progressive downsample/upsample ladder bloom implemented as a custom pass graph, with live-tunable `threshold`/`intensity`
|
|
66
|
+
- The underlying pass factories `ex.createBlurPasses(...)`/`ex.createGlowPasses(...)` are also exported for splicing into custom pass chains
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
const blur = new ex.BlurEffect({ graphicsContext, strength: 2 });
|
|
70
|
+
actor.graphics.material = new ex.Material({
|
|
71
|
+
graphicsContext,
|
|
72
|
+
passes: blur,
|
|
73
|
+
padding: 16 // blur can bleed 16px outside the sprite without clipping
|
|
74
|
+
});
|
|
75
|
+
blur.strength = 4; // live-tunable any time
|
|
76
|
+
|
|
77
|
+
// fullscreen: effects can be added as post processors directly
|
|
78
|
+
game.graphicsContext.addPostProcessor(new ex.BloomEffect({ graphicsContext, threshold: 0.6 }));
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
- Added an opt-in 2D lighting simulation, enabled with the new `lighting: true` engine option (default `false`). When enabled every scene gets a `FlickerSystem` and `LightingSystem` that render darkness veils, point/cone lights with flicker, and occluder shadows via the new `DarknessComponent`, `PointLightComponent`, `ConeLightComponent`, and `LightOccluderComponent` components. The overlay is rasterized with the 2D Canvas API and re-uploaded to the GPU every frame, which carries a performance penalty — this is why the feature is off by default. The systems can also be added manually to individual scenes with `scene.world.add(new ex.LightingSystem())` without enabling the engine option.
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
const game = new ex.Engine({ lighting: true });
|
|
85
|
+
const lamp = new ex.Actor({ pos: ex.vec(100, 100) });
|
|
86
|
+
lamp.addComponent(new ex.PointLightComponent({ color: ex.Color.fromRGB(255, 200, 80), radius: 200 }));
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Pass a `LightingConfig` object instead of `true` to tune the simulation's defaults — including the ambient brightness floor/color assumed everywhere a scene has no explicit `DarknessComponent` override:
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
const game = new ex.Engine({
|
|
93
|
+
lighting: {
|
|
94
|
+
enabled: true,
|
|
95
|
+
zIndex: 100, // z-index of the lighting overlay
|
|
96
|
+
cullPadding: 64, // world-pixel padding around the camera frustum when culling lights/occluders
|
|
97
|
+
ambientIntensity: 0.1, // ambient brightness floor (0.0 to 1.0)
|
|
98
|
+
ambientColor: ex.Color.fromRGB(60, 60, 200), // tints the darkness veil toward this color
|
|
99
|
+
tintAlphaFactor: 0.35, // fraction of a light's intensity used for its colored tint
|
|
100
|
+
shadowNearOpacity: 0.92, // occluder shadow opacity at the occluder's edge
|
|
101
|
+
shadowMidOpacity: 0.6 // occluder shadow opacity at 40% of the shadow's reach
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Any entity with a collider-like shape can cast a dynamic shadow by adding a `LightOccluderComponent`:
|
|
107
|
+
|
|
108
|
+
```typescript
|
|
109
|
+
const crate = new ex.Actor({ pos: ex.vec(300, 200), width: 40, height: 40 });
|
|
110
|
+
crate.addComponent(new ex.LightOccluderComponent({ shape: { kind: 'box', width: 40, height: 40 } }));
|
|
111
|
+
```
|
|
112
|
+
- Materials are now enumerable for debugging and tooling (like the Excalibur Dev Tools browser extension): every `Material` has a unique `material.id` and public `material.vertexSource`/`material.fragmentSource` getters, and is automatically registered with its context, retrievable via `game.graphicsContext.materials`. The registry holds materials weakly so it does not prevent garbage collection.
|
|
113
|
+
- Added the `ex.glsl` tagged template literal for authoring `Material` fragment shaders. It lights up GLSL syntax highlighting, adds the `#version`/`precision` boilerplate, injects the `pixel_texture()` pixel art filter on demand, and handles alpha premultiplication automatically.
|
|
114
|
+
|
|
115
|
+
Excalibur's pipeline is premultiplied end to end, which makes hand written shaders easy to get subtly wrong in both directions: introducing your own alpha without premultiplying blends too bright, and premultiplying a `texture()` sample that is already premultiplied darkens antialiased edges. Shaders written with the tag instead get a straight (un-premultiplied) alpha authoring space, so ordinary alpha math just works:
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
const material = game.graphicsContext.createMaterial({
|
|
119
|
+
name: 'fade',
|
|
120
|
+
fragmentSource: ex.glsl`
|
|
121
|
+
in vec2 v_uv;
|
|
122
|
+
uniform sampler2D u_graphic;
|
|
123
|
+
out vec4 fragColor;
|
|
124
|
+
|
|
125
|
+
void main() {
|
|
126
|
+
vec4 color = texture(u_graphic, v_uv);
|
|
127
|
+
color.a *= 0.5; // no manual premultiply needed
|
|
128
|
+
fragColor = color;
|
|
129
|
+
}`
|
|
130
|
+
});
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Sample non-color data with `ex_texture_raw(tex, uv)` to bypass the conversion, or add `#pragma excalibur premultiply(off)` to opt a shader out entirely.
|
|
134
|
+
|
|
135
|
+
- Added new lerp modes for color which can be chosen by aptional parameter in `Color.lerp` or by calling different methods:
|
|
136
|
+
```typescript
|
|
137
|
+
Color.lerp(colorA, colorB, t); // 'hsl' by default
|
|
138
|
+
// eqivalent to:
|
|
139
|
+
Color.lerpHSL(colorA, colorB, t);
|
|
140
|
+
|
|
141
|
+
Color.lerp(colorA, colorB, t, 'rgb');
|
|
142
|
+
// eqivalent to:
|
|
143
|
+
Color.lerpRGB(colorA, colorB, t);
|
|
144
|
+
|
|
145
|
+
Color.lerp(colorA, colorB, t, 'lrgb');
|
|
146
|
+
// equivalent to:
|
|
147
|
+
Color.lerpLRGB(colorA, colorB, t);
|
|
148
|
+
```
|
|
149
|
+
- Added `Color.fromFloatArray([0.0, 0.0, 0.0, 1.0])` and `Color.toFloatArray()`
|
|
150
|
+
- Sound objects can be created from `Blob`s:
|
|
151
|
+
```typescript
|
|
152
|
+
const sound = await Sound.fromBlob(instanceOfBlob)
|
|
153
|
+
sound.play()
|
|
154
|
+
```
|
|
155
|
+
- Docs: The API documentation pipeline has been rebuilt around a vendored fork of `docusaurus-plugin-typedoc-api` (added as a git submodule under `site/vendor/docusaurus-plugin-typedoc-api`). The new `site/scripts/gen-typedoc-api.mjs` generates TypeDoc output and an `api-symbol-index.json` consumed by the docs site.
|
|
156
|
+
```bash
|
|
157
|
+
# in site/
|
|
158
|
+
npm run build:docusaurus-plugin-typedoc-api # build the vendored plugin
|
|
159
|
+
npm run api:generate # run typedoc + normalize
|
|
160
|
+
```
|
|
161
|
+
- Docs: New `remark-api-symbol-links` plugin (`site/plugins/remark-api-symbol-links.mjs`) resolves `[[Symbol]]` markdown links to the generated TypeDoc API pages using the symbol index, replacing the external `remark-typedoc-symbol-links` package.
|
|
19
162
|
|
|
20
163
|
### Fixed
|
|
21
164
|
|
|
22
|
-
-
|
|
165
|
+
- Fixed issue where `rotateBy({…})` would not rotate at all for a full-turn offset (`2 * Math.PI` normalized to a zero-length rotation) and would rotate the wrong way for offsets larger than `Math.PI`. When no `rotationType` is provided, `rotateBy` now rotates by exactly the signed offset given, preserving full and multiple turns; when a `rotationType` is provided, the offset determines the target orientation and the type picks the travel path as before. Also fixed an angular velocity spike of ±2π on frames where a multi-turn rotation wrapped past the canonical angle range
|
|
166
|
+
- Fixed issue where a pointer's normalized id could change mid-contact. `PointerEventReceiver` normalized native pointer ids by sorting all active native ids and using the array index, so an already-tracked pointer (e.g. a touch in a multi-touch gesture) was silently re-assigned a different id when another pointer went down or up, routing its subsequent events to the wrong `PointerAbstraction`. Normalized ids are now stable for the lifetime of the contact; the smallest freed id is reused for new contacts (so a lone new touch always lands back on `pointers.primary`); cancelled contacts (`pointercancel`/`touchcancel`) free their id and clear their down state instead of leaking; and the mouse keeps its id reserved after mouse-up since it persists as a hover pointer
|
|
167
|
+
- Fixed issue where the post processor `u_time_ms` uniform accumulated elapsed time once per post processor per update, advancing N times too fast with N post processors installed
|
|
168
|
+
- Fixed issue where Local-space particles could be double-returned to the object pool, causing the same Particle instance to be active in two slots simultaneously
|
|
169
|
+
- Fixed issue where window resize events were handled twice when using window-based display modes (FitScreen, FitScreenAndFill, FitScreenAndZoom, FillScreen), causing double resolution/viewport computation and double canvas size writes
|
|
170
|
+
- Fixed Matrix and AffineMatrix scale/rotation decomposition bug where getScaleX/getScaleY used wrong basis components for non-uniform scale combined with rotation, causing swapped scale values and corrupt transforms. Also fixed setRotation and setScaleX/setScaleY to operate on correct column basis vectors.
|
|
171
|
+
- Fixed issue where `Resource.load()` would hang forever on network errors (DNS failure, CORS block, offline), deadlocking the loader and all scene navigation. The promise now rejects with a `ResourceLoadingError` containing the resource path and a descriptive message
|
|
172
|
+
- Fixed issue where `Gif.isLoaded()` always returned `true` because it checked `!!this.data` on an empty array, causing Gifs to be silently skipped by the loader and never parsed
|
|
173
|
+
- Fixed issue where `scaleTo({…})` and `scaleBy({…})` actions would cause entities to keep scaling indefinitely after the action completed, due to a copy-paste bug that zeroed `angularVelocity` instead of `scaleFactor`
|
|
174
|
+
- Fixed issue where `scaleTo({…})` and `scaleBy({…})` actions used a live reference to the entity's scale vector as the interpolation start point, causing the easing curve to be corrupted if the entity's scale changed during the action
|
|
175
|
+
- Fixed issue where the first action in a sequence would not execute after calling `clearActions()` mid-execution. All action types now properly reset their initialization state when stopped, resolving issue #3468
|
|
176
|
+
- Performance: Font/Text now use smaller texture sizes, improving performance on Safari especially when rendering text
|
|
177
|
+
- Fixed `Color.screen()` blend mode bug where both operands were incorrectly using the parameter color instead of `this` and the parameter
|
|
178
|
+
- Fixed `Color.toRGBA()` logic error in alpha check condition (`||` changed to `&&`)
|
|
179
|
+
- Fixed `Color.toHSLA()` to output valid CSS format with degrees for hue and percentages for saturation/lightness
|
|
180
|
+
- Fixed `Color.toHex()` to properly clamp RGB values to 0-255 range
|
|
181
|
+
- Docs: Fixed broken internal links, anchors, and `[[Symbol]]` references across the docs and blog (e.g. `#sprites` → `/docs/sprites`, `#ExcaliburGraphicsContext` → `/docs/graphics-context`), and replaced invalid `[[Actor.update]]` symbol links with plain `Actor.update` references where the member is not part of the public API surface
|
|
182
|
+
- Docs: Fixed incorrect JSDoc `@param`/`@returns` tags and removed dead commented-out code blocks in engine source (e.g. `CollisionSolver`, `BoundingBox.draw`) that produced invalid TypeDoc output
|
|
183
|
+
- Fixed `BoundingBox.intersect()` return type to be explicitly `Vector | null` (callers already null-checked, but the type was not reflected)
|
|
23
184
|
|
|
24
185
|
### Updates
|
|
25
186
|
|
|
26
|
-
-
|
|
187
|
+
- Deps: Upgraded to TypeScript 6.0.3 (from 5.6.3) and typescript-eslint 8.63.0 (from 8.38.0); engine source updated for TS6 strictness (non-null assertions, `null` → `undefined` defaults, optional fields)
|
|
188
|
+
- Deps: Upgraded to Docusaurus 3.10.1 (from 3.5.2) across the docs site, including `@docusaurus/*` packages, theme/preset packages, and the mdx-loader
|
|
189
|
+
- Deps: Upgraded to TypeDoc 0.28.19 (vendored plugin) and removed the top-level `typedoc` devDependency / `overrides`
|
|
190
|
+
- Deps: Upgraded Vitest 4.1.8 → 4.1.10 and Vite 8.0.16 → 8.1.4; browser API is now enabled with `allowWrite`/`allowExec` in the unit config, and the Vitest API host was changed from `0.0.0.0` to `127.0.0.1`
|
|
191
|
+
- Deps: Upgraded `coveralls-next` 6.0.1 → 6.0.2
|
|
192
|
+
- Deps: Removed unused `@types/marked` devDependency and `wallaby.js` test runner config
|
|
193
|
+
- CI: API doc generation now runs as part of `npm run all:ci` (via `npm run apidocs` → `site/scripts/gen-typedoc-api.mjs`); the dedicated `typedoc` CI job in the build workflow has been removed
|
|
194
|
+
- CI: The `eslint` config dropped the obsolete `parserOptions.project` overrides now that typescript-eslint handles project context differently
|
|
27
195
|
|
|
28
196
|
### Changed
|
|
29
197
|
|
|
30
|
-
-
|
|
198
|
+
- API documentation are now generated into the Docusaurus build directory (`site/generated/`, gitignored) and copied into `.docusaurus/generated/` during `site` build, instead of the legacy `docs/api/` output location
|
|
31
199
|
|
|
32
200
|
<!--------------------------------- DO NOT EDIT BELOW THIS LINE --------------------------------->
|
|
33
201
|
<!--------------------------------- DO NOT EDIT BELOW THIS LINE --------------------------------->
|
|
@@ -1308,11 +1476,18 @@ const hits = engine.currentScene.physics.rayCast(
|
|
|
1308
1476
|
|
|
1309
1477
|
### Updates
|
|
1310
1478
|
|
|
1311
|
-
-
|
|
1479
|
+
- Deps: Upgraded to TypeScript 6.0.3 (from 5.6.3) and typescript-eslint 8.63.0 (from 8.38.0); engine source updated for TS6 strictness (non-null assertions, `null` → `undefined` defaults, optional fields)
|
|
1480
|
+
- Deps: Upgraded to Docusaurus 3.10.1 (from 3.5.2) across the docs site, including `@docusaurus/*` packages, theme/preset packages, and the mdx-loader
|
|
1481
|
+
- Deps: Upgraded to TypeDoc 0.28.19 (vendored plugin) and removed the top-level `typedoc` devDependency / `overrides`
|
|
1482
|
+
- Deps: Upgraded Vitest 4.1.8 → 4.1.10 and Vite 8.0.16 → 8.1.4; browser API is now enabled with `allowWrite`/`allowExec` in the unit config, and the Vitest API host was changed from `0.0.0.0` to `127.0.0.1`
|
|
1483
|
+
- Deps: Upgraded `coveralls-next` 6.0.1 → 6.0.2
|
|
1484
|
+
- Deps: Removed unused `@types/marked` devDependency and `wallaby.js` test runner config
|
|
1485
|
+
- CI: API doc generation now runs as part of `npm run all:ci` (via `npm run apidocs` → `site/scripts/gen-typedoc-api.mjs`); the dedicated `typedoc` CI job in the build workflow has been removed
|
|
1486
|
+
- CI: The `eslint` config dropped the obsolete `parserOptions.project` overrides now that typescript-eslint handles project context differently
|
|
1312
1487
|
|
|
1313
1488
|
### Changed
|
|
1314
1489
|
|
|
1315
|
-
-
|
|
1490
|
+
- API documentation are now generated into the Docusaurus build directory (`site/generated/`, gitignored) and copied into `.docusaurus/generated/` during `site` build, instead of the legacy `docs/api/` output location
|
|
1316
1491
|
|
|
1317
1492
|
## [v0.28.2]
|
|
1318
1493
|
|
package/build/dist/{Actions/Action/ActionSequence.d.ts → actions/action/action-sequence.d.ts}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Entity } from '../../
|
|
2
|
-
import type { Action } from '../
|
|
3
|
-
import { ActionContext } from '../
|
|
1
|
+
import type { Entity } from '../../entity-component-system';
|
|
2
|
+
import type { Action } from '../action';
|
|
3
|
+
import { ActionContext } from '../action-context';
|
|
4
4
|
/**
|
|
5
5
|
* Action that can represent a sequence of actions, this can be useful in conjunction with
|
|
6
6
|
* {@apilink ParallelActions} to run multiple sequences in parallel.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Entity } from '../../
|
|
2
|
-
import type { Action } from '../
|
|
1
|
+
import type { Entity } from '../../entity-component-system/entity';
|
|
2
|
+
import type { Action } from '../action';
|
|
3
3
|
export declare class Blink implements Action {
|
|
4
4
|
id: number;
|
|
5
5
|
private _graphics;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Entity } from '../../
|
|
2
|
-
import type { Vector } from '../../
|
|
3
|
-
import type { Action } from '../
|
|
1
|
+
import type { Entity } from '../../entity-component-system';
|
|
2
|
+
import type { Vector } from '../../math';
|
|
3
|
+
import type { Action } from '../action';
|
|
4
4
|
export interface CurveByOptions {
|
|
5
5
|
/**
|
|
6
6
|
* Bezier Curve relative to the current actor position to move
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Entity } from '../../
|
|
2
|
-
import type { Vector } from '../../
|
|
3
|
-
import type { Action } from '../
|
|
1
|
+
import type { Entity } from '../../entity-component-system';
|
|
2
|
+
import type { Vector } from '../../math';
|
|
3
|
+
import type { Action } from '../action';
|
|
4
4
|
export interface CurveToOptions {
|
|
5
5
|
/**
|
|
6
6
|
* Bezier Curve in world coordinates to animate towards
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Entity } from '../../
|
|
2
|
-
import type { Action } from '../
|
|
1
|
+
import type { Entity } from '../../entity-component-system/entity';
|
|
2
|
+
import type { Action } from '../action';
|
|
3
3
|
export declare class Die implements Action {
|
|
4
4
|
id: number;
|
|
5
5
|
private _entity;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Entity } from '../../
|
|
2
|
-
import type { Action } from '../
|
|
1
|
+
import type { Entity } from '../../entity-component-system/entity';
|
|
2
|
+
import type { Action } from '../action';
|
|
3
3
|
/**
|
|
4
4
|
* @deprecated use moveBy({offset: Vector, duration: number, easing: EasingFunction})
|
|
5
5
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Entity } from '../../
|
|
2
|
-
import type { Action } from '../
|
|
1
|
+
import type { Entity } from '../../entity-component-system/entity';
|
|
2
|
+
import type { Action } from '../action';
|
|
3
3
|
/**
|
|
4
4
|
* @deprecated use moveTo({pos: Vector, duration: number, easing: EasingFunction})
|
|
5
5
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Entity } from '../../
|
|
2
|
-
import type { Action } from '../
|
|
1
|
+
import type { Entity } from '../../entity-component-system/entity';
|
|
2
|
+
import type { Action } from '../action';
|
|
3
3
|
export declare class Fade implements Action {
|
|
4
4
|
id: number;
|
|
5
5
|
private _graphics;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Entity } from '../../
|
|
2
|
-
import type { Action } from '../
|
|
3
|
-
import type { Color } from '../../
|
|
1
|
+
import type { Entity } from '../../entity-component-system/entity';
|
|
2
|
+
import type { Action } from '../action';
|
|
3
|
+
import type { Color } from '../../color';
|
|
4
4
|
export declare class Flash implements Action {
|
|
5
5
|
id: number;
|
|
6
6
|
private _graphics;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Entity } from '../../
|
|
2
|
-
import type { Action } from '../
|
|
1
|
+
import type { Entity } from '../../entity-component-system/entity';
|
|
2
|
+
import type { Action } from '../action';
|
|
3
3
|
export declare class Follow implements Action {
|
|
4
4
|
id: number;
|
|
5
5
|
private _tx;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Entity } from '../../
|
|
2
|
-
import type { Action } from '../
|
|
1
|
+
import type { Entity } from '../../entity-component-system/entity';
|
|
2
|
+
import type { Action } from '../action';
|
|
3
3
|
export declare class Meet implements Action {
|
|
4
4
|
id: number;
|
|
5
5
|
private _tx;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import type { Entity } from '../../
|
|
2
|
-
import type { Easing } from '../../
|
|
3
|
-
import { Vector } from '../../
|
|
4
|
-
import type {
|
|
5
|
-
import type { Action } from '../Action';
|
|
1
|
+
import type { Entity } from '../../entity-component-system/entity';
|
|
2
|
+
import type { Easing } from '../../math';
|
|
3
|
+
import { Vector } from '../../math/vector';
|
|
4
|
+
import type { Action } from '../action';
|
|
6
5
|
export interface MoveByOptions {
|
|
7
6
|
offset: Vector;
|
|
8
7
|
duration: number;
|
|
9
|
-
easing?: Easing
|
|
8
|
+
easing?: Easing;
|
|
10
9
|
}
|
|
11
10
|
/**
|
|
12
11
|
*
|
|
@@ -24,9 +23,7 @@ export declare class MoveByWithOptions implements Action {
|
|
|
24
23
|
private _stopped;
|
|
25
24
|
private _motion;
|
|
26
25
|
private _offset;
|
|
27
|
-
private _legacyEasing;
|
|
28
26
|
private _easing;
|
|
29
|
-
private _useLegacyEasing;
|
|
30
27
|
constructor(entity: Entity, options: MoveByOptions);
|
|
31
28
|
update(elapsed: number): void;
|
|
32
29
|
isComplete(entity: Entity): boolean;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import type { Entity } from '../../
|
|
2
|
-
import type { Easing } from '../../
|
|
3
|
-
import { Vector } from '../../
|
|
4
|
-
import type {
|
|
5
|
-
import type { Action } from '../Action';
|
|
1
|
+
import type { Entity } from '../../entity-component-system/entity';
|
|
2
|
+
import type { Easing } from '../../math';
|
|
3
|
+
import { Vector } from '../../math/vector';
|
|
4
|
+
import type { Action } from '../action';
|
|
6
5
|
export interface MoveToOptions {
|
|
7
6
|
pos: Vector;
|
|
8
7
|
duration: number;
|
|
9
|
-
easing?: Easing
|
|
8
|
+
easing?: Easing;
|
|
10
9
|
}
|
|
11
10
|
/**
|
|
12
11
|
*
|
|
@@ -24,8 +23,6 @@ export declare class MoveToWithOptions implements Action {
|
|
|
24
23
|
private _stopped;
|
|
25
24
|
private _motion;
|
|
26
25
|
private _easing;
|
|
27
|
-
private _legacyEasing;
|
|
28
|
-
private _useLegacyEasing;
|
|
29
26
|
constructor(entity: Entity, options: MoveToOptions);
|
|
30
27
|
update(elapsed: number): void;
|
|
31
28
|
isComplete(entity: Entity): boolean;
|
package/build/dist/{Actions/Action/ParallelActions.d.ts → actions/action/parallel-actions.d.ts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Entity } from '../../
|
|
2
|
-
import type { Action } from '../
|
|
1
|
+
import type { Entity } from '../../entity-component-system';
|
|
2
|
+
import type { Action } from '../action';
|
|
3
3
|
/**
|
|
4
4
|
* Action that can run multiple {@apilink Action}s or {@apilink ActionSequence}s at the same time
|
|
5
5
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Entity } from '../../
|
|
2
|
-
import type { Action } from '../
|
|
3
|
-
import { ActionContext } from '../
|
|
1
|
+
import type { Entity } from '../../entity-component-system/entity';
|
|
2
|
+
import type { Action } from '../action';
|
|
3
|
+
import { ActionContext } from '../action-context';
|
|
4
4
|
/**
|
|
5
5
|
* RepeatForever Action implementation, it is recommended you use the fluent action
|
|
6
6
|
* context API.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Entity } from '../../
|
|
2
|
-
import type { Action } from '../
|
|
3
|
-
import { ActionContext } from '../
|
|
1
|
+
import type { Entity } from '../../entity-component-system/entity';
|
|
2
|
+
import type { Action } from '../action';
|
|
3
|
+
import { ActionContext } from '../action-context';
|
|
4
4
|
export declare class Repeat implements Action {
|
|
5
5
|
id: number;
|
|
6
6
|
private _actionQueue;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Action } from '../
|
|
2
|
-
import type { Entity } from '../../
|
|
3
|
-
import { RotationType } from '../../
|
|
1
|
+
import type { Action } from '../action';
|
|
2
|
+
import type { Entity } from '../../entity-component-system/entity';
|
|
3
|
+
import { RotationType } from '../../math';
|
|
4
4
|
export interface RotateByOptions {
|
|
5
5
|
/**
|
|
6
6
|
* Angle in radians to offset from the current and rotate
|
|
@@ -11,7 +11,12 @@ export interface RotateByOptions {
|
|
|
11
11
|
*/
|
|
12
12
|
duration: number;
|
|
13
13
|
/**
|
|
14
|
-
* Optionally provide type of rotation
|
|
14
|
+
* Optionally provide type of rotation. When omitted the entity rotates by exactly the
|
|
15
|
+
* signed offset provided, preserving full turns (an offset of 2 PI performs a full revolution).
|
|
16
|
+
* When provided, the offset determines the target orientation and the rotation type picks
|
|
17
|
+
* the travel path to it. Non-zero full-turn multiples of 2 PI travel one full revolution in
|
|
18
|
+
* the requested direction for Clockwise, CounterClockwise, and LongestPath, while
|
|
19
|
+
* ShortestPath will not move.
|
|
15
20
|
*/
|
|
16
21
|
rotationType?: RotationType;
|
|
17
22
|
}
|
|
@@ -30,8 +35,9 @@ export declare class RotateByWithOptions implements Action {
|
|
|
30
35
|
private _motion;
|
|
31
36
|
private _offset;
|
|
32
37
|
private _startAngle;
|
|
33
|
-
private _rotationType
|
|
34
|
-
private
|
|
38
|
+
private _rotationType?;
|
|
39
|
+
private _travel;
|
|
40
|
+
private _currentAngle;
|
|
35
41
|
constructor(entity: Entity, options: RotateByOptions);
|
|
36
42
|
update(elapsed: number): void;
|
|
37
43
|
isComplete(): boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Action } from '../
|
|
2
|
-
import { RotationType } from '../../
|
|
3
|
-
import type { Entity } from '../../
|
|
1
|
+
import type { Action } from '../action';
|
|
2
|
+
import { RotationType } from '../../math';
|
|
3
|
+
import type { Entity } from '../../entity-component-system/entity';
|
|
4
4
|
export interface RotateToOptions {
|
|
5
5
|
/**
|
|
6
6
|
* Absolute angle to rotate to in radians
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Vector } from '../../
|
|
2
|
-
import type { Entity } from '../../
|
|
3
|
-
import type { Action } from '../
|
|
1
|
+
import { Vector } from '../../math/vector';
|
|
2
|
+
import type { Entity } from '../../entity-component-system/entity';
|
|
3
|
+
import type { Action } from '../action';
|
|
4
4
|
export interface ScaleByOptions {
|
|
5
5
|
/**
|
|
6
6
|
* Absolute scale to change to
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Vector } from '../../
|
|
2
|
-
import type { Action } from '../
|
|
3
|
-
import type { Entity } from '../../
|
|
1
|
+
import { Vector } from '../../math/vector';
|
|
2
|
+
import type { Action } from '../action';
|
|
3
|
+
import type { Entity } from '../../entity-component-system/entity';
|
|
4
4
|
export interface ScaleToOptions {
|
|
5
5
|
/**
|
|
6
6
|
* Absolute scale to change to
|