Excalibur v0.29.2 Release
This is a medium-ish release, with a ton of community contributions especially in the bugfix realm!
Features
- Added ability to configure image wrapping on
ex.ImageSource
with the newex.ImageWrapping.Clamp
(default),ex.ImageWrapping.Repeat
, andex.ImageWrapping.Mirror
.const image = new ex.ImageSource('path/to/image.png', { filtering: ex.ImageFiltering.Pixel, wrapping: { x: ex.ImageWrapping.Repeat, y: ex.ImageWrapping.Repeat, } });
- Added pointer event support to
ex.TileMap
's and individualex.Tile
's - Added pointer event support to
ex.IsometricMap
's and individualex.IsometricTile
's - Added
useAnchor
parameter toex.GraphicsGroup
to allow users to opt out of anchor based positioning, if set to false all graphics members
will be positioned with the top left of the graphic at the actor's position.const graphicGroup = new ex.GraphicsGroup({ useAnchor: false, members: [ { graphic: heartImage.toSprite(), offset: ex.vec(0, 0), }, { graphic: heartImage.toSprite(), offset: ex.vec(0, 16), }, { graphic: heartImage.toSprite(), offset: ex.vec(16, 16), }, { graphic: heartImage.toSprite(), offset: ex.vec(16, 0), }, ], });
- Added simplified
ex.coroutine
overloads, you need not pass engine as long as you are in an Excalibur lifecycleconst result = ex.coroutine(function* () {...});
- Added way to bind 'this' to
ex.coroutine
overloads, you need not pass engine as long as you are in an Excalibur lifecycleconst result = ex.coroutine({myThis: 'cool'}, function* () {...});
- Added optional
ex.coroutine
timing parameter to schedule when they are updatedconst result = ex.coroutine(engine, function * () {...}, { timing: 'postupdate' })
- Added
GraphicsComponent.bounds
which will report the world bounds of the graphic if applicable! - Added
ex.Vector.EQUALS_EPSILON
to configure theex.Vector.equals(v)
threshold - Added way to add custom WebGL context lost/recovered handlers for your game
const game = new ex.Engine({ handleContextLost: (e) => {...}, handleContextRestored: (e) => {...} })
Fixed
- Fixed issue where
ex.TileMap
culling did not work properly when using fixed updates lower than refresh rate - Fixed incomplete types for font options in
ex.FontSource().toFont(options)
- Fixed issue with
ex.Loader
start button position when using CSS transforms - Fixed issue where adding scenes with the same name did not work when it was previously removed
- Fixed issue when WebGL context lost occurs where there was no friendly output to the user
- Fixed issue where HiDPI scaling could accidentally scale past the 4k mobile limit, if the context would scale too large it will now attempt to recover by backing off.
- Fixed issue where logo was sometimes not loaded during
ex.Loader
- Fixed issue where unbounded containers would grow infinitely when using the following display modes:
DisplayMode.FillContainer
DisplayMode.FitContainer
DisplayMode.FitContainerAndFill
DisplayMode.FitContainerAndZoom
- Fixed issue where
ex.ParticleEmitter
z-index did not propagate to particles - Fixed incongruent behavior as small scales when setting
transform.scale = v
andtransform.scale.setTo(x, y)
- Fixed
ex.coroutine
TypeScript type to include yieldingundefined
- Fixed issue where Firefox on Linux would throw an error when using custom Materials due to unused attributes caused by glsl compiler optimization.
- Fixed issue where start transition did not work properly if deferred
- Fixed issue where transitions did not cover the whole screen if camera was zoomed
- Fixed issue where
Color.toHex()
produced invalid strings if the channel values are negative or fractional, or if the alpha channel was different than 1
Changed
- Significant 2x performance improvement to image drawing in Excalibur
- Simplified
ex.Loader
viewport/resolution internal configuration
Raw Changes
What's Changed
- fix: Firefox + Linux custom shader issue with glsl compiler attribute optimization by @eonarheim in #2943
- chore: Update dependency @mdx-js/react to v3.0.1 by @renovate in #2945
- chore: Update dependency @types/react to v18.2.61 by @renovate in #2946
- chore: Update dependency @types/react-color to v3.0.12 by @renovate in #2947
- chore: Update dependency jasmine-core to v5.1.2 by @renovate in #2948
- chore: Update dependency karma to v6.4.3 by @renovate in #2949
- chore: Update dependency node to v20.11.1 by @renovate in #2950
- chore: Update babel monorepo to v7.24.0 by @renovate in #2951
- chore: Update dependency core-js to v3.36.0 by @renovate in #2952
- chore: Update dependency docusaurus-plugin-typedoc-api to v4.2.0 by @renovate in #2953
- chore: Update dependency eslint to v8.57.0 by @renovate in #2954
- chore: Update dependency eslint-plugin-storybook to v0.8.0 by @renovate in #2955
- chore: Update dependency prism-react-renderer to v2.3.1 by @renovate in #2956
- revert: "chore: Update dependency docusaurus-plugin-typedoc-api to v4.2.0" by @eonarheim in #2959
- fix: fit content resizing incorrectly by @eonarheim in #2960
- fix: Handle webgl context lost + Recover from hidpi scale too large by @eonarheim in #2958
- fix: Screen to world coord conversion when using fit container by @eonarheim in #2961
- feat: Allow coroutine lifecycles + support thisArg + remove engine requirement by @eonarheim in #2965
- fix: incomplete types for options in ex.FontSource.toFont() by @mattjennings in #2973
- chore: Correct the doc for vector.rotate by @isokissa in #2977
- Typo fix: post instead of pre. by @JustLeif in #2978
- fix: Update docs, SpriteFont by @sellmark in #2979
- change: GraphicsGroup no longer centers with anchors by @eonarheim in #2966
- feat: Add pointer events to TileMap/IsometricMap and tiles by @eonarheim in #2968
- perf: Remove allocations from image-renderer by @eonarheim in #2962
- fix: wrong hex color values by @mcavazotti in #2985
- chore: Update babel monorepo by @renovate in #2987
- chore: Update dependency @types/react to v18.2.73 by @renovate in #2988
- chore: Update dependency core-js to v3.36.1 by @renovate in #2989
- chore: Update dependency excalibur-jasmine to v0.3.4 by @renovate in #2990
- chore: Update dependency node to v20.12.0 by @renovate in #2992
- chore: Update dependency replace-in-file to v7.1.0 by @renovate in #2993
- chore: Update dependency webpack to v5.91.0 by @renovate in #2997
- chore: Update dependency semver to v7.6.0 by @renovate in #2994
- chore: Update docusaurus monorepo to v3.2.0 by @renovate in #3000
- Revert "chore: Update docusaurus monorepo to v3.2.0" by @eonarheim in #3002
- chore: Update storybook monorepo to v7.6.17 by @renovate in #3001
- chore(deps-dev): bump webpack-dev-middleware from 6.1.1 to 6.1.3 by @dependabot in #2999
- chore(deps): bump express from 4.18.2 to 4.19.2 in /site by @dependabot in #2984
- Web docs corrections by @ikudrickiy in #3004
- chore(deps-dev): bump follow-redirects from 1.14.8 to 1.15.6 by @dependabot in #2967
- chore(deps-dev): bump express from 4.18.2 to 4.19.2 by @dependabot in #2982
- chore(deps): bump axios and wait-on in /site by @dependabot in #2940
- chore(deps-dev): bump ip from 2.0.0 to 2.0.1 by @dependabot in #2939
- chore(deps): bump webpack-dev-middleware from 5.3.3 to 5.3.4 in /site by @dependabot in #2980
- chore(deps): bump follow-redirects from 1.15.3 to 1.15.6 in /site by @dependabot in #2971
- chore: Update dependency @octokit/rest to v20 by @renovate in #2722
- chore: Update ubuntu Docker tag to v22 by @renovate in #2839
- chore: Update react monorepo to v18 (major) by @renovate in #2836
- feat: Implement image wrapping configuration by @eonarheim in #2963
New Contributors
- @isokissa made their first contribution in #2977
- @JustLeif made their first contribution in #2978
- @sellmark made their first contribution in #2979
- @mcavazotti made their first contribution in #2985
- @ikudrickiy made their first contribution in #3004
Full Changelog: v0.29.1...v0.29.2