Avg Release Cycle
937 days ago
Task::succeed, which replaces the old
- ➕ Additional color constants:
Color::from_rgb_u32, which allows to constructs a
Colorusing an hexadecimal literal (
Game::is_finished, which allows to gracefully quit the game on demand. #79
Canvas::read_pixels, a method to read the contents of a
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::Imagein 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.
Mesh::strokenow takes an
line_widthinstead of a
Task::newnow 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_scalenow takes a
- The logic of
KeyboardAndMousehas been split into the new
Mouseinput trackers. The new
keyboardmethods can be used to obtain them, respectively. #69
Mousetype can now track additional input:
meshexample now has a slider to control the tolerance. #100
- Hang when
Game::TICKS_PER_SECONDis set as
- 📱 Responsive GUI support! The new
uimodule can be used to extend a
Gameand build a user interface. #35
- GUI runtime based on Elm and The Elm Architecture.
- Layouting based on Flexbox and powered by
- 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::coremodule can be used to implement custom widgets and renderers.
- 👍 Gamepad support. The
input::Eventenum now has a
- 👍 Mesh support. The types
Meshhave been introduced. Rectangles, circles, ellipses, and polylines can now be drawn with ease using fill or stroke modes. #50
Game::LoadingScreenassociated type. Given that all the
Gameassociated types implement a trait with a
loadmethod, wiring a loading screen now is as simple as writing its name. Because of this, the
Game::newmethod is no longer necessary and it is dropped. #35
Inputtrait. It allows to implement reusable input handlers. #35
KeyboardAndMouseinput handler. Useful to quickstart development and have easy access to the keyboard and the mouse from the get-go. #35
CursorReturnedmouse input events. They are fired when the cursor is used/freed by the user interface. #35
- 👍 Off-screen text rendering support.
Font::drawnow supports any
Targetinstead of a window
Game::debugperformance tracking. Time spent on this method is now shown in the built-in debug view. #26
- 0️⃣ Implementation of
Transformation::rotate. Creates a transformation representing a rotation. #28
Batch::clear. Clears the batch contents, useful to reuse batches in different frames.
- Implementation of
- 🐎 Implementation of
Batchcan now be populated using multiple threads, useful to improve performance when dealing with many thousands of quads. #37
Textalignment. It can be defined using the new
VerticalAlignmenttypes in the
Font::measure. It allows to measure the dimensions of any
Rectangle::contains. It returns whether or not a
Rectanglecontains a given
Sprite::scale. It can be used to change the
Spritesize when drawed.
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
- Multiple gravity centers based on mouse clicks in the particles example. #30
- 🚚 The
Game::Inputassociated type now has to implement the new
Inputtrait. This splits code quite nicely, as the
on_inputmethod moves away from
Game. It also makes
Inputimplementors reusable. For instance, a
KeyboardAndMousetype has been implemented that can be used out of the box! #35
Game::drawnow takes a
Framedirectly instead of a
LoadingScreen::on_progresshas been renamed to
LoadingScreen::drawand it now receives a
Frameinstead of a
input::Eventis now split into four different variants representing input sources:
Window. Each one of these sources has its own module inside
Eventtype where the old variants can be found. #29
input::KeyCodehas been moved to
input::MouseButtonhas been moved to
texture_array::Batch::drawdo not take a
positionargument anymore. Using
Target::transformbefore drawing is preferred. #53
Font::loadhas been renamed to
Font::load_from_bytesfor consistency. #55
- 🐎 The performance of the particles example has been improved considerably on all platforms. #37
- 💻 The
inputexample uses the new
- 🍱 The
Game::Viewassociated type. Implementors of the
Gametrait 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::loadshould be used instead. #35
Game::on_input. Input handlers now must be implemented using the new
- 📱 Responsive GUI support! The new
Game::on_close_requestto control whether the game should be closed when the window receives a close request by the OS. #14
input::Event::TextInputevent, which triggers on text entry. Contains the character typed as a
input::Event::CursorLeftevents, 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
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
- 👍 Text rendering for the
wgpugraphics 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
- 0️⃣ The debug view is now shown by default when the
debugfeature is enabled.
- The wording in the
READMEhas been improved.
- Compilation failing when
debugfeature were disabled.
- The wording in the
- 🚀 First release! 🎉
- 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