chore: Update dependency excalibur to v0.29.0 #496
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.28.7
->0.29.0
Release Notes
excaliburjs/Excalibur (excalibur)
v0.29.0
Compare Source
Breaking Changes
ex.Entity.tags
is now a javascriptSet
instead of anArray
this will affect methods that inspected tags as an array before.ex.Engine.goToScene
's second argument now takesGoToOptions
instead of just scene activation dataex.Physics
static is marked as deprecated, configuring these setting will move to theex.Engine({...})
constructorChanged the
Font
default base align toTop
this is more in line with user expectations. This does change the default rendering to the top left corner of the font instead of the bottom left.Remove confusing Graphics Layering from
ex.GraphicsComponent
, recommend we use theex.GraphicsGroup
to manage this behaviorex.GraphicsGroup
to be consistent and useoffset
instead ofpos
for graphics relative positioningECS implementation has been updated to remove the "stringly" typed nature of components & systems
class MySystem extends System<'ex.component'>
becomesclass MySystem extends System
class MyComponent extends Component<'ex.component'>
becomesclass MyComponent extends Component
ex.System.update(elapsedMs: number)
is only passed an elapsed timePrevent people from inadvertently overriding
update()
inex.Scene
andex.Actor
. This method can still be overridden with the//@​ts-ignore
pragmaex.SpriteSheet.getSprite(...)
will now throw on invalid sprite coordinates, this is likely always an error and a warning is inappropriate. This also has the side benefit that you will always get a definite type out of the method.Deprecated
Added
Added new
ex.Tilemap.getOnScreenTiles()
method to help users access onscreen tiles for logic or other concerns.Added
ex.FontSource
resource typeFont options can be defined either at the source or at the
toFont()
call. If defined in both,toFont(options)
willoverride the options in the
FontSource
.Added fullscreen after load feature! You can optionally provide a
fullscreenContainer
with a string id or an instance of theHTMLElement
Added new
ex.Debug
static for more convenient debug drawing where you might not have a graphics context accessible to you. This works by batching up all the debug draw requests and flushing them during the debug draw step.ex.Debug.drawRay(ray: Ray, options?: { distance?: number, color?: Color })
ex.Debug.drawBounds(boundingBox: BoundingBox, options?: { color?: Color })
ex.Debug.drawCircle(center: Vector, radius: number, options?: ...)
ex.Debug.drawPolygon(points: Vector[], options?: { color?: Color })
ex.Debug.drawText(text: string, pos: Vector)
ex.Debug.drawLine(start: Vector, end: Vector, options?: LineGraphicsOptions)
ex.Debug.drawLines(points: Vector[], options?: LineGraphicsOptions)
drawPoint(point: Vector, options?: PointGraphicsOptions)
Experimental
ex.coroutine
for running code that changes over time, useful for modeling complex animation code. Coroutines return a promise when they are complete. You can think of eachyield
as a frame.Added additional options in rayCast options
ignoreCollisionGroupAll: boolean
will ignore testing against anything with theCollisionGroup.All
which is the default for allfilter: (hit: RayCastHit) => boolean
will allow people to do arbitrary filtering on raycast results, this runs very last after all other collision group/collision mask decisions have been madeAdded additional data
side
andlastContact
toonCollisionEnd
andcollisionend
eventsAdded configuration option to
ex.PhysicsConfig
to configure composite collider onCollisionStart/End behaviorAdded configuration option to
ex.TileMap({ meshingLookBehind: Infinity })
which allows users to configure how far the TileMap looks behind for matching colliders (default is 10).Added Arcade Collision Solver bias to help mitigate seams in geometry that can cause problems for certain games.
ex.ContactSolveBias.None
No bias, current default behavior collisions are solved in the default distance orderex.ContactSolveBias.VerticalFirst
Vertical collisions are solved first (useful for platformers with up/down gravity)ex.ContactSolveBias.HorizontalFirst
Horizontal collisions are solved first (useful for games with left/right predominant forces)Added Graphics
opacity
on the Actor constructornew ex.Actor({opacity: .5})
Added Graphics pixel
offset
on the Actor constructornew ex.Actor({offset: ex.vec(-15, -15)})
Added new
new ex.Engine({uvPadding: .25})
option to allow users using texture atlases in their sprite sheets to configure this to avoid texture bleed. This can happen if you're sampling from images meant for pixel artAdded new antialias settings for pixel art! This allows for smooth subpixel rendering of pixel art without shimmer/fat-pixel artifacts.
new ex.Engine({pixelArt: true})
to opt in to all the right defaults to make this work!Added new antialias configuration options to deeply configure how Excalibur does any antialiasing, or you can provide
antialiasing: true
/antialiasing: false
to use the old defaults.Added new
lineHeight
property onSpriteFont
andFont
to manually adjust the line height when rendering text.Added missing dual of
ex.GraphicsComponent.add()
, you can nowex.GraphicsComponent.remove(name)
;Added additional options to
ex.Animation.fromSpriteSheetCoordinates()
you can now pass any validex.GraphicOptions
to influence the sprite per frameAdded additional options to
ex.SpriteSheet.getSprite(..., options)
. You can pass any validex.GraphicOptions
to modify a copy of the sprite from the spritesheet.New simplified way to query entities
ex.World.query([MyComponentA, MyComponentB])
New way to query for tags on entities
ex.World.queryTags(['A', 'B'])
Systems can be added as a constructor to a world, if they are the world will construct and pass a world instance to them
Added
RayCastHit
as part of every raycast not just the physics world query!Added the ability to log a message once to all log levels
debugOnce
infoOnce
warnOnce
errorOnce
fatalOnce
Added ability to load additional images into
ex.Material
s!Scene Transition & Loader API, this gives you the ability to have first class support for individual scene resource loading and scene transitions.
Add or remove scenes by constructor
Add loaders by constructor
New
ex.DefaultLoader
type that allows for easier custom loader creationNew
ex.Transition
type for building custom transitionsNew scene lifecycle to allow scene specific resource loading
onTransition(direction: "in" | "out") {...}
onPreLoad(loader: DefaultLoader) {...}
New async
goToScene()
API that allows overriding loaders/transitions between scenesScenes now can have
async onInitialize
andasync onActivate
!New scenes director API that allows upfront definition of scenes/transitions/loaders
Example:
Defining scenes upfront
Fixed
ex.TileMap
finding onscreen tiles is now BLAZINGLY FAST thanks to a suggestion from Kristen Maeyvn in the Discord.ex.TileMap.getTileByPoint()
did not take into account the rotation/scale of the tilemap.pixelRatio
on low res games to upscale'together'
, this means the whole composite collider is treated as 1 collider for onCollisionStart/onCollisionEnd. Now you can configure aseparate
which will fire onCollisionStart/onCollisionEnd for every separate collider included in the composite (useful if you are building levels or things with gaps that you need to disambiguate). You can also configure this on a per composite level to mix and matchCompositeCollider.compositeStrategy
Components
and.get(Builtin)
will return the correct subtype.Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.