# Changelog While we try to keep the `Unreleased` changes updated, it is often behind and does not include all merged pull requests. To see a list of all changes since the latest release, you may compare current changes on git with [previous release tags][git_tag_comparison]. [git_tag_comparison]: https://github.com/bevyengine/bevy/compare/v0.3.0...master ## Unreleased ### Added - [`bevy_log`][836] - Adds logging functionality as a Plugin. - Changes internal logging to work with the new implementation. - [Controllable ambient light color][852] - Added a resource to change the current ambient light color for PBR. - [Added more basic color constants][859] - [System Inputs, Outputs, and Chaining][876] - [Expose an `EventId` for events][894] - [Added `set_cursor_position` to `Window`][917] - [Added new Bevy reflection system][926] - Replaces the properties system - [Add removal_detection example][945] ### Changed - [FileAssetIo includes full path on error][821] - [Removed ECS query APIs that could easily violate safety from the public interface][829] - [Changed Query filter API to be easier to understand][834] - [Breaking changes to timer API][914] - Created getters and setters rather than exposing struct members. - [Removed timer auto-ticking system][931] - Added an example of how to tick timers manually. - [Breaking changes to Time API][934] - Created getters to get `Time` state and made members private. - Modifying `Time`'s values directly is no longer possible outside of bevy. - [Use `mailbox` instead of `fifo` for vsync on supported systems][920] ### Fixed - [Fixed typos in KeyCode identifiers][857] - [Don't draw text that isn't visible][893] - [Use `instant::Instant` for WASM compatibility][895] - [Fixed duplicated children when spawning a Scene][904] - [Corrected behaviour of the UI depth system][905] - [Run parent-update and transform-propagation during the "post-startup" stage][955] [821]: https://github.com/bevyengine/bevy/pull/821 [829]: https://github.com/bevyengine/bevy/pull/829 [834]: https://github.com/bevyengine/bevy/pull/834 [836]: https://github.com/bevyengine/bevy/pull/836 [852]: https://github.com/bevyengine/bevy/pull/852 [857]: https://github.com/bevyengine/bevy/pull/857 [859]: https://github.com/bevyengine/bevy/pull/859 [876]: https://github.com/bevyengine/bevy/pull/876 [893]: https://github.com/bevyengine/bevy/pull/893 [894]: https://github.com/bevyengine/bevy/pull/894 [895]: https://github.com/bevyengine/bevy/pull/895 [904]: https://github.com/bevyengine/bevy/pull/904 [905]: https://github.com/bevyengine/bevy/pull/905 [914]: https://github.com/bevyengine/bevy/pull/914 [917]: https://github.com/bevyengine/bevy/pull/917 [920]: https://github.com/bevyengine/bevy/pull/920 [926]: https://github.com/bevyengine/bevy/pull/926 [931]: https://github.com/bevyengine/bevy/pull/931 [934]: https://github.com/bevyengine/bevy/pull/934 [945]: https://github.com/bevyengine/bevy/pull/945 [955]: https://github.com/bevyengine/bevy/pull/955 ## Version 0.3.0 (2020-11-03) ### Added - [Touch Input][696] - [iOS XCode Project][539] - [Android Example and use bevy-glsl-to-spirv 0.2.0][740] - [Introduce Mouse capture API][679] - [`bevy_input::touch`: implement touch input][696] - [D-pad support on MacOS][653] - [Support for Android file system][723] - [app: PluginGroups and DefaultPlugins][744] - `PluginGroup` is a collection of plugins where each plugin can be enabled or disabled. - [Support to get gamepad button/trigger values using `Axis`][683] - [Expose Winit decorations][627] - [Enable changing window settings at runtime][644] - [Expose a pointer of EventLoopProxy to process custom messages][674] - [Add a way to specify padding/ margins between sprites in a TextureAtlas][460] - [Add `bevy_ecs::Commands::remove` for bundles][579] - [impl `Default` for `TextureFormat`][675] - [Expose current_entity in ChildBuilder][595] - [`AppBuilder::add_thread_local_resource`][671] - [`Commands::write_world_boxed` takes a pre-boxed world writer to the ECS's command queue][661] - [`FrameTimeDiagnosticsPlugin` now shows "frame count" in addition to "frame time" and "fps"][678] - [Add hierarchy example][565] - [`WgpuPowerOptions` for choosing between low power, high performance, and adaptive power][397] - Derive `Debug` for more types: [#597][597], [#632][632] - Index buffer specialization - [Allows the use of U32 indices in Mesh index buffers in addition to the usual U16 indices][568] - [Switch to u32 indices by default][572] - More instructions for system dependencies - [Add `systemd-devel` for Fedora Linux dependencies][528] - [Add `libudev-dev` to Ubuntu dependencies][538] - [Add Void Linux to linux dependencies file][645] - [WSL2 instructions][727] - [Suggest `-Zrun-dsymutil-no` for faster compilation on MacOS][552] ### Changed - [ecs: ergonomic query.iter(), remove locks, add QuerySets][741] - `query.iter()` is now a real iterator! - `QuerySet` allows working with conflicting queries and is checked at compile-time. - [Rename `query.entity()` and `query.get()`][752] - `query.get::(entity)` is now `query.get_component::(entity)` - `query.entity(entity)` is now `query.get(entity)` - [Asset system rework and GLTF scene loading][693] - [Introduces WASM implementation of `AssetIo`][703] - [Move transform data out of Mat4][596] - [Separate gamepad state code from gamepad event code and other customizations][700] - [gamepad: expose raw and filtered gamepad events][711] - [Do not depend on `spirv-reflect` on `wasm32` target][689] - [Move dynamic plugin loading to its own optional crate][544] - [Add field to `WindowDescriptor` on wasm32 targets to optionally provide an existing canvas element as winit window][515] - [Adjust how `ArchetypeAccess` tracks mutable & immutable deps][660] - [Use `FnOnce` in `Commands` and `ChildBuilder` where possible][535] - [Runners explicitly call `App.initialize()`][690] - [sRGB awareness for `Color`][616] - Color is now assumed to be provided in the non-linear sRGB colorspace. Constructors such as `Color::rgb` and `Color::rgba` will be converted to linear sRGB. - New methods `Color::rgb_linear` and `Color::rgba_linear` will accept colors already in linear sRGB (the old behavior) - Individual color-components must now be accessed through setters and getters. - [`Mesh` overhaul with custom vertex attributes][599] - Any vertex attribute can now be added over `mesh.attributes.insert()`. - See `example/shader/mesh_custom_attribute.rs` - Removed `VertexAttribute`, `Vertex`, `AsVertexBufferDescriptor`. - For missing attributes (requested by shader, but not defined by mesh), Bevy will provide a zero-filled fallback buffer. - Despawning an entity multiple times causes a debug-level log message to be emitted instead of a panic: [#649][649], [#651][651] - [Migrated to Rodio 0.12][692] - New method of playing audio can be found in the examples. - Added support for inserting custom initial values for `Local` system resources [#745][745] ### Fixed - [Properly update bind group ids when setting dynamic bindings][560] - [Properly exit the app on AppExit event][610] - [Fix FloatOrd hash being different for different NaN values][618] - [Fix Added behavior for QueryOne get][543] - [Update camera_system to fix issue with late camera addition][488] - [Register `IndexFormat` as a property][664] - [Fix breakout example bug][685] - [Fix PreviousParent lag by merging parent update systems][713] - [Fix bug of connection event of gamepad at startup][730] - [Fix wavy text][725] [397]: https://github.com/bevyengine/bevy/pull/397 [460]: https://github.com/bevyengine/bevy/pull/460 [488]: https://github.com/bevyengine/bevy/pull/488 [515]: https://github.com/bevyengine/bevy/pull/515 [528]: https://github.com/bevyengine/bevy/pull/528 [535]: https://github.com/bevyengine/bevy/pull/535 [538]: https://github.com/bevyengine/bevy/pull/538 [539]: https://github.com/bevyengine/bevy/pull/539 [543]: https://github.com/bevyengine/bevy/pull/543 [544]: https://github.com/bevyengine/bevy/pull/544 [552]: https://github.com/bevyengine/bevy/pull/552 [560]: https://github.com/bevyengine/bevy/pull/560 [565]: https://github.com/bevyengine/bevy/pull/565 [568]: https://github.com/bevyengine/bevy/pull/568 [572]: https://github.com/bevyengine/bevy/pull/572 [579]: https://github.com/bevyengine/bevy/pull/579 [595]: https://github.com/bevyengine/bevy/pull/595 [596]: https://github.com/bevyengine/bevy/pull/596 [597]: https://github.com/bevyengine/bevy/pull/597 [599]: https://github.com/bevyengine/bevy/pull/599 [610]: https://github.com/bevyengine/bevy/pull/610 [616]: https://github.com/bevyengine/bevy/pull/616 [618]: https://github.com/bevyengine/bevy/pull/618 [627]: https://github.com/bevyengine/bevy/pull/627 [632]: https://github.com/bevyengine/bevy/pull/632 [644]: https://github.com/bevyengine/bevy/pull/644 [645]: https://github.com/bevyengine/bevy/pull/645 [649]: https://github.com/bevyengine/bevy/pull/649 [651]: https://github.com/bevyengine/bevy/pull/651 [653]: https://github.com/bevyengine/bevy/pull/653 [660]: https://github.com/bevyengine/bevy/pull/660 [661]: https://github.com/bevyengine/bevy/pull/661 [664]: https://github.com/bevyengine/bevy/pull/664 [671]: https://github.com/bevyengine/bevy/pull/671 [674]: https://github.com/bevyengine/bevy/pull/674 [675]: https://github.com/bevyengine/bevy/pull/675 [678]: https://github.com/bevyengine/bevy/pull/678 [679]: https://github.com/bevyengine/bevy/pull/679 [683]: https://github.com/bevyengine/bevy/pull/683 [685]: https://github.com/bevyengine/bevy/pull/685 [689]: https://github.com/bevyengine/bevy/pull/689 [690]: https://github.com/bevyengine/bevy/pull/690 [692]: https://github.com/bevyengine/bevy/pull/692 [693]: https://github.com/bevyengine/bevy/pull/693 [696]: https://github.com/bevyengine/bevy/pull/696 [700]: https://github.com/bevyengine/bevy/pull/700 [703]: https://github.com/bevyengine/bevy/pull/703 [711]: https://github.com/bevyengine/bevy/pull/711 [713]: https://github.com/bevyengine/bevy/pull/713 [723]: https://github.com/bevyengine/bevy/pull/723 [725]: https://github.com/bevyengine/bevy/pull/725 [727]: https://github.com/bevyengine/bevy/pull/727 [730]: https://github.com/bevyengine/bevy/pull/730 [740]: https://github.com/bevyengine/bevy/pull/740 [741]: https://github.com/bevyengine/bevy/pull/741 [744]: https://github.com/bevyengine/bevy/pull/744 [745]: https://github.com/bevyengine/bevy/pull/745 [752]: https://github.com/bevyengine/bevy/pull/752 ## Version 0.2.1 (2020-9-20) ### Fixed - [Remove UI queue print][521] - [Use async executor 1.3.0][526] [521]: https://github.com/bevyengine/bevy/pull/521 [526]: https://github.com/bevyengine/bevy/pull/526 ## Version 0.2.0 (2020-9-19) ### Added - [Task System for Bevy][384] - Replaces rayon with a custom designed task system that consists of several "TaskPools". - Exports `IOTaskPool`, `ComputePool`, and `AsyncComputePool` in `bevy_tasks` crate. - [Parallel queries for distributing work over with the `ParallelIterator` trait.][292] - e.g. `query.iter().par_iter(batch_size).for_each(/* ... */)` - [Added gamepad support using Gilrs][280] - [Implement WASM support for bevy_winit][503] - [Create winit canvas under WebAssembly][506] - [Implement single threaded task scheduler for WebAssembly][496] - [Support for binary glTF (.glb).][271] - [Support for `Or` in ECS queries.][358] - [Added methods `unload()` and `unload_sync()` on `SceneSpawner` for unloading scenes.][339]. - [Custom rodio source for audio.][145] - `AudioOuput` is now able to play anything `Decodable`. - [`Color::hex`][362] for creating `Color` from string hex values. - Accepts the forms RGB, RGBA, RRGGBB, and RRGGBBAA. - [`Color::rgb_u8` and `Color::rgba_u8`.][381] - [Added `bevy_render::pass::ClearColor` to prelude.][396] - [`SpriteResizeMode` may choose how `Sprite` resizing should be handled. `Automatic` by default.][430] - [Added methods on `Input`][428] for iterator access to keys. - `get_pressed()`, `get_just_pressed()`, `get_just_released()` - [Derived `Copy` for `MouseScrollUnit`.][270] - [Derived `Clone` for UI component bundles.][390] - [Some examples of documentation][338] - [Update docs for Updated, Changed and Mutated][451] - Tips for faster builds on macOS: [#312][312], [#314][314], [#433][433] - Added and documented cargo features - [Created document `docs/cargo_features.md`.][249] - [Added features for x11 and wayland display servers.][249] - [and added a feature to disable libloading.][363] (helpful for WASM support) - Added more instructions for Linux dependencies - [Arch / Manjaro][275], [NixOS][290], [Ubuntu][463] and [Solus][331] - [Provide shell.nix for easier compiling with nix-shell][491] - [Add `AppBuilder::add_startup_stage_|before/after`][505] ### Changed - [Transform rewrite][374] - [Use generational entity ids and other optimizations][504] - [Optimize transform systems to only run on changes.][417] - [Send an AssetEvent when modifying using `get_id_mut`][323] - [Rename `Assets::get_id_mut` -> `Assets::get_with_id_mut`][332] - [Support multiline text in `DrawableText`][183] - [iOS: use shaderc-rs for glsl to spirv compilation][324] - [Changed the default node size to Auto instead of Undefined to match the Stretch implementation.][304] - [Load assets from root path when loading directly][478] - [Add `render` feature][485], which makes the entire render pipeline optional. ### Fixed - [Properly track added and removed RenderResources in RenderResourcesNode.][361] - Fixes issues where entities vanished or changed color when new entities were spawned/despawned. - [Fixed sprite clipping at same depth][385] - Transparent sprites should no longer clip. - [Check asset path existence][345] - [Fixed deadlock in hot asset reloading][376] - [Fixed hot asset reloading on Windows][394] - [Allow glTFs to be loaded that don't have uvs and normals][406] - [Fixed archetypes_generation being incorrectly updated for systems][383] - [Remove child from parent when it is despawned][386] - [Initialize App.schedule systems when running the app][444] - [Fix missing asset info path for synchronous loading][486] - [fix font atlas overflow][495] - [do not assume font handle is present in assets][490] ### Internal Improvements - Many improvements to Bevy's CI [#325][325], [#349][349], [#357][357], [#373][373], [#423][423] [145]: https://github.com/bevyengine/bevy/pull/145 [183]: https://github.com/bevyengine/bevy/pull/183 [249]: https://github.com/bevyengine/bevy/pull/249 [270]: https://github.com/bevyengine/bevy/pull/270 [271]: https://github.com/bevyengine/bevy/pull/271 [275]: https://github.com/bevyengine/bevy/pull/275 [280]: https://github.com/bevyengine/bevy/pull/280 [290]: https://github.com/bevyengine/bevy/pull/290 [292]: https://github.com/bevyengine/bevy/pull/292 [304]: https://github.com/bevyengine/bevy/pull/304 [312]: https://github.com/bevyengine/bevy/pull/312 [314]: https://github.com/bevyengine/bevy/pull/314 [323]: https://github.com/bevyengine/bevy/pull/323 [324]: https://github.com/bevyengine/bevy/pull/324 [325]: https://github.com/bevyengine/bevy/pull/325 [331]: https://github.com/bevyengine/bevy/pull/331 [332]: https://github.com/bevyengine/bevy/pull/332 [338]: https://github.com/bevyengine/bevy/pull/332 [345]: https://github.com/bevyengine/bevy/pull/345 [349]: https://github.com/bevyengine/bevy/pull/349 [357]: https://github.com/bevyengine/bevy/pull/357 [358]: https://github.com/bevyengine/bevy/pull/358 [361]: https://github.com/bevyengine/bevy/pull/361 [362]: https://github.com/bevyengine/bevy/pull/362 [363]: https://github.com/bevyengine/bevy/pull/363 [373]: https://github.com/bevyengine/bevy/pull/373 [374]: https://github.com/bevyengine/bevy/pull/374 [376]: https://github.com/bevyengine/bevy/pull/376 [381]: https://github.com/bevyengine/bevy/pull/381 [383]: https://github.com/bevyengine/bevy/pull/383 [384]: https://github.com/bevyengine/bevy/pull/384 [385]: https://github.com/bevyengine/bevy/pull/385 [386]: https://github.com/bevyengine/bevy/pull/386 [390]: https://github.com/bevyengine/bevy/pull/390 [394]: https://github.com/bevyengine/bevy/pull/394 [396]: https://github.com/bevyengine/bevy/pull/396 [339]: https://github.com/bevyengine/bevy/pull/339 [406]: https://github.com/bevyengine/bevy/pull/406 [417]: https://github.com/bevyengine/bevy/pull/417 [423]: https://github.com/bevyengine/bevy/pull/423 [428]: https://github.com/bevyengine/bevy/pull/428 [430]: https://github.com/bevyengine/bevy/pull/430 [433]: https://github.com/bevyengine/bevy/pull/433 [444]: https://github.com/bevyengine/bevy/pull/444 [451]: https://github.com/bevyengine/bevy/pull/451 [463]: https://github.com/bevyengine/bevy/pull/463 [478]: https://github.com/bevyengine/bevy/pull/478 [485]: https://github.com/bevyengine/bevy/pull/485 [486]: https://github.com/bevyengine/bevy/pull/486 [490]: https://github.com/bevyengine/bevy/pull/490 [491]: https://github.com/bevyengine/bevy/pull/491 [495]: https://github.com/bevyengine/bevy/pull/495 [496]: https://github.com/bevyengine/bevy/pull/496 [503]: https://github.com/bevyengine/bevy/pull/503 [504]: https://github.com/bevyengine/bevy/pull/504 [505]: https://github.com/bevyengine/bevy/pull/505 [506]: https://github.com/bevyengine/bevy/pull/506 ## Version 0.1.3 (2020-8-22) ## Version 0.1.2 (2020-8-10) ## Version 0.1.1 (2020-8-10) ## Version 0.1.0 (2020-8-10)