Release v0.1.0
In the past five months, I have dedicated significant effort to a complete rewrite of Bevy_Lunex. I am excited to announce that the library has reached a functional state. Here are the major highlights since version 0.0.11
:
Major changes
-
States - UI entities now feature a state machine, akin to TailwindCSS's class overrides (e.g.,
bg-red-500 hover:bg-yellow-500
). This allows for defining a wide range of properties, including layout changes, based on different states. -
Worldspace UI - Creating worldspace and diegetic UI is now possible.
-
2D & 3D - You can now combine 2D and 3D cameras to render 2D UI elements on top of a 3D scene, perfect for HUDs and other overlay interfaces.
-
Component Abstraction - Abstract different UI components (not ECS components) such as buttons and input fields into their own encapsulated abstractions, enhancing modularity and reusability.
-
Routing - Organize your project by splitting your UI into distinct "routes" (e.g.,
Inventory
,MainMenu
,Settings
). These routes can be spawned and managed dynamically, keeping your UI code tidy and manageable. -
Interactivity - Now implemented on top of
bevy_mod_picking
, providing a significantly better solution compared to previous custom implementations. -
Lazy compute - Layout calculations are now cached. This offers performance benefits, especially for infrequently updated UIs.
-
New UI Units - Mix and match different units like pixels and percentages (9 total) in the layout. Can be compared to HTML's
calc(...)
function. -
ECS modularity - All user interfaces are now constructed using standard ECS entities and components. This change paves the way for leveraging the upcoming BSN (Bevy Scene Notation) addition.
Try it out
Get started by reading official Bevy Lunex Book docs.
Check out the Bevypunk WASM on Itch.io.
Changelog
Full Changelog: https://github.com/bytestring-net/bevy_lunex/commits/0.1.0