Releases: excaliburjs/Excalibur
Releases · excaliburjs/Excalibur
Excalibur v0.19.1
Excalibur v0.19.0
Thanks to @T00mm , @TheEyeOfBrows for their contributions!
Changed
- Excalibur user documentation has now moved to excaliburjs.com/docs
- Excalibur will now prompt for user input before starting the game to be inline with the new webaudio requirements from chrome/mobile browsers (#1031)
Deprecated
PauseAfterLoader
for iOS in favor of new click-to-play functionality built into the defaultLoader
(#1031)
Fixed
- Fixed issue where Edge web audio playback was breaking (#1047)
- Fixed issue where pointer events do not work in mobile (#1044)
- Fixed issue where iOS was not loading by including the right polyfills (#1043)
- Fixed issue where sprites do not work in Firefox (#980)
- Fixed issue where collision pairs could sometimes be incorrect (#975)
- Fixed box collision velocity resolution so that objects resting on a surface do not accumulate velocity (#986)
Excalibur v0.18.0
Breaking Changes
Sound.setVolume()
replaced withSound.volume
Sound.setLoop()
replaced withSound.loop
Added
- Add
Scene.isActorInDrawTree
method to determine if an actor is in the scene's draw tree.
Fixed
Excalibur v0.17.0
Thanks to @frodgesh, @jamesmcgeorge, @rougepied, @clofresh, @LoserAntbear, @FerociousQuasar, and @Carghaez for their contributions!
Breaking Changes
- Property scope
Pointer.actorsUnderPointer
changed to private; Sprite.sx
replaced withSprite.x
Sprite.sy
replaced withSprite.y
Sprite.swidth
replaced withSprite.width
Sprite.sheight
replaced withSprite.height
Added
- Allow timers to limit repeats to a finite number of times (#957)
- Convenience method on Scene to determine whether it is the current scene. Scene.isCurrentScene() (#982)
- New
PointerEvent.stopPropagation()
method added. Works the same way as (https://developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation
)
(#912) - New
Actor.getAncestors()
method, which retreives full array of current Actor ancestors - Static
Actor.defaults
prop, which implementsIActorDefaults
. - Native sound events now exposed
volumechange
- on playing sound volume change;pause
- on playback pause;stop
- on playback stop;emptied
- on data cleanup(f.e. when setting new data);resume
- on playback resume;playbackstart
- on playback start;playbackend
- on playback end;
- Added
Sound.instances
getter, which returns active tracks. Playing or paused; - Added
Sound.getTrackId(track: [[AudioInstance]])
method. Which returns id of track provided,
if it is in list of active tracks.
Changed
- Refactored Easing functions to be reversable (#944)
- Now at creation every
Actor.anchor
prop is set to defaultActor.defaults.anchor
. - Scene.remove(Actor) now starts the Actor.Kill event cycle.(#981)
Deprecated
CapturePointer.update()
method now doesn't propagate event to actor, just verifies pointer events for actor.- Added
Sound.volume
&Sound.loop
properties as a replacement forSound.setVolume()
andSound.setLoop()
. The methodssetVolume
andsetLoop
have been marked obsolete.
Fixed
- Added missing variable assignments to TileMapImpl constructor (#957)
- Correct setting audio volume level from
value
tosetValueAtTime
to comply with deprecation warning in Chrome 59 (#953) - Force HiDPI scaling to always be at least 1 to prevent visual artifacts in some browsers
- Recalculate physics geometry when width/height change on Actor (#948)
- Fix camera move chaining (#944)
- Fix
pickSet(allowDuplicates: true)
now returns the proper length array with correct elements (#977) Index
export order to preventalmond.js
from creation of corrupted modules loading order.Sound.pause()
now saves correct timings.- Fix
ex.Vector.isValid
edgecase atInfinity
(#1006)
Excalibur v0.16.0
Thanks to @pathurs, @dgparker, and @rougepied for their contributions!
Added
- New typesafe and override safe event lifecycle overriding, all
onEventName
handlers will no longer be dangerous to override (#582)- New lifecycle event
onPreKill
andonPostKill
- New lifecycle event
- SpriteSheets can now produce animations from bespoke sprite coordinates
SpriteSheet.getAnimationByCoords(engine, coords[], speed)
(#918) - Added drag and drop support for Actors (#134)
- New Event
enter
- New Event
leave
- New Event
pointerenter
- New Event
pointerleave
- New Event
pointerdragstart
- New Event
pointerdragend
- New Event
pointerdragmove
- New Event
pointerdragenter
- New Event
pointerdragleave
- New Class
PointerDragEvent
which extendsPointerEvent
- New Class
GlobalCoordinates
that contains Vectors for the world, the page, and the screen. - Added property
ICapturePointerConfig.captureDragEvents
which controls whether to emit drag events to the actor - Added property
PointerEvent.pointer
which equals the original pointer object
- New Event
Deprecated
Sprite.sx
,Sprite.sy
,Sprite.swidth
,Sprite.sheight
has be deprecated in favor ofSprite.x
,Sprite.y
,Sprite.width
,Sprite.height
(#918)
Fixed
- Added missing lifecycle event handlers on Actors, Triggers, Scenes, Engine, and Camera (#582)
- Tile Maps now correctly render negative x-axis coordinates (#904)
- Offscreen culling in HiDPI mode (#949)
- Correct bounds check to check drawWidth/drawHeight for HiDPI
- suppressHiDPIScaling now also suppresses pixel ratio based scaling
- Extract and separate Sprite width/height from drawWidth/drawHeight to prevent context corruption (#951)
Excalibur v0.15.0
Breaking Changes
LockedCamera
replaced withBaseCamera.strategy.lockToActor
SideCamera
replaced withBaseCamera.strategy.lockToActorAxis
Body.wasTouching
replaced with event typeCollisionEnd
Added
- Option bag constructors have been added for commonly-used classes (see Constructors.md) (#410)
Excalibur v0.14.0
Breaking Changes
- Triggers now have a new option bag constructor using the
ITriggerOptions
interface. (#863). update
event replaced withpostupdate
eventCollisionEvent
replaced byPreCollisionEvent
getDrawWidth()
andgetDrawHeight()
replaced with the gettersdrawWidth
anddrawHeight
PointerEvent.x
andPointerEvent.y
replaced withPointerEvent.pos
Added
- Automatic HiDPI screen detection and scaling in excalibur internals to correct blurry bitmap rendering on HiDPI screens. This feature can optionally be suppressed with
IEngineOptions.suppressHiDPIScaling
. - Added new line utility
Line.normal()
andLine.distanceToPoint
(#703) - Added new PolygonArea utility
PolygonArea.getClosestFace(point)
(#703) - Triggers now fire an
EnterTriggerEvent
when an actor enters the trigger, and anExitTriggerEvent
when an actor exits the trigger. (#863) - Actors have a new events
CollisionStart
which when 2 actors first start colliding andCollisionEnd
when 2 actors are no longer colliding. (#863) - New camera strategies implementation for following targets in a scene. Allows for custom strategies to be implemented on top of some prebuilt
LockCameraToActorStrategy
which behaves likeLockedCamera
and can be switched on withCamera.strategy.lockToActor(actor)
.LockCameraToActorAxisStrategy
which behaves likeSideCamera
and can be switched on withCamera.strategy.lockToActorAxis(actor, ex.Axis.X)
ElasticToActorStrategy
which is a new strategy that elastically moves the camera to an actor and can be switched on withCamera.strategy.elasticToActor(actor, cameraElasticity, cameraFriction)
CircleAroundActorStrategy
which is a new strategy that will follow an actor when a certain radius from the camera focus and can be switched on withCamera.strategy.circleAroundActor(actor)
Changed
- Trigger have been rebuilt to provide a better experience. The trigger
action
only fires when an actor enters the designated area instead of every frame of collision. (#863) - Triggers can now draw like other Actors, but are still not visible by default (#863)
Deprecated
Body.wasTouching
has been deprecated in favor of a new event typeCollisionEnd
(#863)SideCamera
andLockedCamera
are deprecated in favor of camera strategies
Fixed
- Fixed odd jumping behavior when polygons collided with the end of an edge (#703)
Excalibur v0.13.0
Thanks to @Nysosis and @Thraka for their contributions!
Breaking Changes
Scene.children
replaced withScene.actors
Added
- New pause/unpause feature for timers to help with more robust pausing (#885)
- New event listening feature to listen to events only
.once(...)
then unsubscribe automatically (#745) - New collision event
postcollision
to indicate if collision resolution occured (#880)
Deprecated
PointerEvent.x
andPointerEvent.y
, in favor ofPointerEvent.pos
(#612)CollisionEvent
has been deprecated in favor of the more clearPreCollisionEvent
(#880)
Fixed
Excalibur v0.12.0
Thanks to @Crizzooo, @htalat, and @vritant24 for their contributions!
Breaking Changes
CollisionType.Elastic
has been removedPromises.wrap
has been replaced withPromise.resolve
Added
- Added new hsl and hex format options in Color.toString(format) using rgb as the default to maintain backwards compatibility (#852)
Changed
Animation.loop
property now to set totrue
by default (#583)- Added backgroundColor to engine options as part of Engine constructor (#846)
Deprecated
ex.Scene.children
is nowex.Scene.actors
(#796)
Excalibur v0.11.0
Thanks to @andrewmbyrd, @Lephil, @mrkmg, and @Crizzooo for contributing in this release!
Breaking Changes
- Renamed Utils.removeItemToArray() to Utils.removeItemFromArray() (#798)
Added
- Added optional volume argument to
Sound.play(volume?: number)
, which will play the Audio file at anywhere from mute (volume
is 0.0) to full volume (volume
is 1.0). (#801) - Added another DisplayMode option:
DisplayMode.Position
. When this is selected as the displayMode type, the user must specify a newposition
option (#781) - Added a static method
distance
to theVector
class (#517) - Added
WheelEvent
event type for thewheel
browser event, Excalibur now supports scroll wheel (#808)
Changed
- Camera zoom over time now returns a promise that resolves on completion (#800)
- Edge builds have more descriptive versions now containing build number and Git commit hash (e.g.
0.10.0-alpha.105#commit
) (#777)