Sobre o projeto
Bevy Lunex é um motor de layout retido criado para o framework Bevy ECS (Entity Component System) em Rust. Ele permite que desenvolvedores criem UIs personalizadas usando componentes e sistemas ECS padrão, em vez de padrões de GUI em modo imediato.
As principais capacidades incluem:
- Modelo de layout retido: o layout é calculado uma vez e armazenado, reduzindo a sobrecarga de recálculo em comparação com sistemas de GUI em modo imediato. Isso oferece benefícios de desempenho para UIs estáticas ou atualizadas com pouca frequência.
- Layout de fluxo semelhante ao flexbox: o modelo integrado UiLayout::flow() oferece suporte a content hugging, preenchimento de espaço, dimensionamento relativo e quebra de texto, inspirado no sistema de layout Clay.
- Suporte a proporção de aspecto: o motor foi projetado para lidar com todos os tamanhos de janela e proporções de aspecto sem deformação, com tipos de layout reagindo intuitivamente a mudanças de tamanho.
- UI 2D e 3D (worldspace): aproveitando o componente Transform do Bevy, o Lunex oferece suporte a elementos de UI planos em 2D e espaciais em 3D, permitindo integração de UI diegética em jogos.
- Estilização multiestado: componentes como UiColor e UiLayout oferecem suporte à definição de layouts e cores para diferentes estados, como base e hover, com velocidades de transição configuráveis.
- Interatividade nativa do ECS: eventos de hover, clique e ponteiro são tratados por meio de observers e sistemas, tornando o comportamento da UI totalmente composável com o restante de um aplicativo Bevy.
A biblioteca enfatiza um design de um componente por funcionalidade, em que gerar um elemento de UI envolve combinar componentes como UiLayout, UiHover, UiColor e componentes de pickable/renderização no estilo ECS padrão do Bevy.
A documentação está disponível via Lunex Book e Docs.rs, com um projeto de exemplo pronto para produção chamado Bevypunk também fornecido.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.