All Versions
9
Latest Version
Avg Release Cycle
51 days
Latest Release
1444 days ago

Changelog History

  • v0.4.1 Changes

    May 11, 2020

    ๐Ÿ›  Fixed

    • Crashes when using Metal or DirectX. #126
  • v0.4.0 Changes

    April 25, 2020

    โž• Added

    • Task::succeed, which replaces the old Task::new. #66
    • 0๏ธโƒฃ Default implementation for ui::widget::slider::State.
    • 0๏ธโƒฃ Default, Clone, Copy, PartialEq, and Eq implementations for ui::widget::button::State.
    • โž• Additional color constants: Color::RED, Color::GREEN, and Color::BLUE. #77
    • Color::from_rgb_u32, which allows to constructs a Color using an hexadecimal literal (0xRRGGBB). #77
    • From<nalgebra::Matrix3> and Into<nalgebra::Matrix3> implementations for Transformation. #78
    • Game::is_finished, which allows to gracefully quit the game on demand. #79
    • Canvas::read_pixels, a method to read the contents of a Canvas as a DynamicImage from the image crate.
    • ๐Ÿ’ป ui::Panel, a dark box that can be used to wrap a widget.
    • ๐Ÿ’ป ui::ProgressBar, a progress bar to give visual feedback to your users when performing a slow task.
    • ๐Ÿ’ป ui::Image, a simple widget to display a graphics::Image in your user interface.
    • Mesh::new_with_tolerance, which allows to control the tolerance of line segment approximations. #100
    • Game::cursor_icon, which allows customization of the mouse cursor icon.

    ๐Ÿ”„ Changed

    • Mesh::stroke now takes an f32 as line_width instead of a u16.
    • ๐Ÿ‘ Task::new now supports a lazy operation that can fail. #66
    • Face culling has been disabled for Vulkan, Metal, D3D11, and D3D12 backends. In OpenGL, face culling was already disabled.
    • Transformation::nonuniform_scale now takes a Vector. #78
    • The logic of KeyboardAndMouse has been split into the new Keyboard and Mouse input trackers. The new mouse and keyboard methods can be used to obtain them, respectively. #69
    • The Mouse type can now track additional input:
      • any button click #67
      • wheel movements #67
      • the cursor leaving/entering the game window #67
    • The mesh example now has a slider to control the tolerance. #100

    ๐Ÿ›  Fixed

    • Hang when Game::TICKS_PER_SECOND is set as 0. #99
  • v0.3.2 Changes

    September 01, 2019

    ๐Ÿ›  Fixed

    • Incorrect buffer sizes in the Mesh pipeline. This caused vertices to entirely disappear when rendering big meshes, leading to a potential crash. 79651405673ecd16da21b887a622f6650b29f38f
    • Validation error when rendering meshes using Vulkan, Metal, D3D11, or D3D12. #81
  • v0.3.1 Changes

    June 20, 2019

    โž• Added

    • ๐Ÿ“š Documentation about the default coordinate system of a Target.

    ๐Ÿ”„ Changed

    • The built-in Debug view now uses ยต instead of u for microseconds.

    ๐Ÿ›  Fixed

    • Resizing in Wayland. #58
    • ๐Ÿ“š Outdated documentation comment in graphics module.
    • ๐Ÿ“š Documentation typos.
  • v0.3.0 Changes

    June 15, 2019

    โž• Added

    • ๐Ÿ“ฑ Responsive GUI support! The new ui module can be used to extend a Game and build a user interface. #35
      • GUI runtime based on Elm and The Elm Architecture.
      • Layouting based on Flexbox and powered by stretch.
      • Built-in GUI widgets. Specifically: buttons, sliders, checkboxes, radio buttons, rows, and columns.
      • Built-in GUI renderer. It is capable of rendering all the built-in GUI widgets.
      • Customization. The ui::core module can be used to implement custom widgets and renderers.
    • ๐Ÿ‘ Gamepad support. The input::Event enum now has a Gamepad variant. #29
    • ๐Ÿ‘ Mesh support. The types Shape and Mesh have been introduced. Rectangles, circles, ellipses, and polylines can now be drawn with ease using fill or stroke modes. #50
    • The Game::LoadingScreen associated type. Given that all the Game associated types implement a trait with a load method, wiring a loading screen now is as simple as writing its name. Because of this, the Game::new method is no longer necessary and it is dropped. #35
    • Input trait. It allows to implement reusable input handlers. #35
    • KeyboardAndMouse input handler. Useful to quickstart development and have easy access to the keyboard and the mouse from the get-go. #35
    • CursorTaken and CursorReturned mouse input events. They are fired when the cursor is used/freed by the user interface. #35
    • ๐Ÿ‘ Off-screen text rendering support. Font::draw now supports any Target instead of a window Frame. #25
    • ๐ŸŽ Game::debug performance tracking. Time spent on this method is now shown in the built-in debug view. #26
    • 0๏ธโƒฃ Implementation of Default trait for Text. #25
    • Transformation::rotate. Creates a transformation representing a rotation. #28
    • Batch::clear. Clears the batch contents, useful to reuse batches in different frames.
    • Implementation of Extend for Batch. #37
    • ๐ŸŽ Implementation of ParallelExtend for Batch. A Batch can now be populated using multiple threads, useful to improve performance when dealing with many thousands of quads. #37
    • Text alignment. It can be defined using the new HorizontalAlignment and VerticalAlignment types in the graphics module. #35
    • Font::measure. It allows to measure the dimensions of any Text. #35
    • Rectangle::contains. It returns whether or not a Rectangle contains a given Point. #35
    • Sprite::scale. It can be used to change the Sprite size when drawed.
    • 0๏ธโƒฃ Default implementation for Sprite. #35
    • ๐Ÿ’ป Debug::ui_duration. It returns the average time spent running the UI runtime.
    • ๐Ÿ’ป A counter example as an introduction to the new UI architecture. #35
    • A user interface example that introduces the different built-in widgets. #35
    • A gamepad example that displays the last gamepad event. #29
    • A mesh example that showcases the different ways to use the new Mesh and Shape types. #50
    • Multiple gravity centers based on mouse clicks in the particles example. #30

    ๐Ÿ”„ Changed

    • ๐Ÿšš The Game::Input associated type now has to implement the new Input trait. This splits code quite nicely, as the on_input method moves away from Game. It also makes Input implementors reusable. For instance, a KeyboardAndMouse type has been implemented that can be used out of the box! #35
    • Game::draw now takes a Frame directly instead of a Window. #35
    • LoadingScreen::on_progress has been renamed to LoadingScreen::draw and it now receives a Frame instead of a Window. #35
    • input::Event is now split into four different variants representing input sources: Keyboard, Mouse, Gamepad, and Window. Each one of these sources has its own module inside input with an Event type where the old variants can be found. #29
    • ๐Ÿšš input::KeyCode has been moved to input::keyboard::KeyCode. #29
    • ๐Ÿšš input::MouseButton has been moved to input::mouse::Button. #29
    • Batch::draw and texture_array::Batch::draw do not take a position argument anymore. Using Target::transform before drawing is preferred. #53
    • Font::load has been renamed to Font::load_from_bytes for consistency. #55
    • ๐ŸŽ The performance of the particles example has been improved considerably on all platforms. #37
    • ๐Ÿ’ป The input example uses the new ui module now.

    โœ‚ Removed

    • ๐Ÿฑ The Game::View associated type. Implementors of the Game trait are also meant to hold the game assets now. This simplifies the API considerably, and it helps model your game state-view relationship with precision, avoiding inconsistencies. #35
    • Game::new. Game::load should be used instead. #35
    • Game::on_input. Input handlers now must be implemented using the new Input trait. #35
  • v0.2.0 Changes

    April 28, 2019

    โž• Added

    • Game::on_close_request to control whether the game should be closed when the window receives a close request by the OS. #14
    • input::Event::TextInput event, which triggers on text entry. Contains the character typed as a char. #15
    • input::Event::CursorEntered and input::Event::CursorLeft events, which trigger when the mouse cursor enters or leaves the game window, respectively. #15
    • input::Event::MouseWheel, which triggers when the mouse wheel is scrolled. Contains the number of horizontal and vertical lines scrolled as f32. #15
    • input::Event::WindowFocused and input::Event::WindowUnfocused, which trigger when the game window gains or loses focus, respectively. #15
    • ๐Ÿšš input::Event::WindowMoved, which triggers when the game window is moved. Contains the new X and Y coordinates of the window as f32. #15
    • ๐Ÿ‘ Text rendering for the wgpu graphics backend. Vulkan, Metal, D3D11 and D3D12 now support text rendering. OpenGL already supported text rendering. #18
    • A changelog. #20
    • Example to showcase input handling. #15
    • Example to showcase proper colors and gamma correction. #19

    ๐Ÿ”„ Changed

    • 0๏ธโƒฃ The debug view is now shown by default when the debug feature is enabled.

    ๐Ÿ›  Fixed

    • Gamma correction in the wgpu graphics backend. Clear colors, font colors, and blending should work as expected in Vulkan, Metal, D3D11 and D3D12. OpenGL was already working properly. #19
  • v0.1.1 Changes

    April 25, 2019

    ๐Ÿ”„ Changed

    • The wording in the README has been improved.

    ๐Ÿ›  Fixed

    • Compilation failing when debug_assertions and the debug feature were disabled.
  • v0.1.0 Changes

    April 25, 2019

    โž• Added

    • ๐Ÿš€ First release! ๐ŸŽ‰
  • v0.0.0 Changes

    April 02, 2019

    ๐Ÿ”„ Changed

    • The name of the crate has been reserved on [crates.io]
    • Coffee starts being developed.

    ๐Ÿš€ [Unreleased]: https://github.com/hecrj/coffee/compare/0.4.1...HEAD

    ๐Ÿš€ [0.1.0]: https://github.com/hecrj/coffee/releases/tag/0.1.0