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.