use std::f32::consts::PI; use glam::{vec2, vec3, Vec2}; use vert_framework::{ app::App, batteries::SimpleCamController, flow::Flow, modules::{ graphics::{ elements::{color::Color, transform::Transform}, shader::{ color_mesh::ColorMeshRenderer, gizmos::Gizmos, text::{DrawText, TextRenderer}, ui_rect::{Rect, UiRect, UiRectRenderer}, world_rect::WorldRectRenderer, }, }, Modules, }, state::StateT, }; pub struct MyState; impl StateT for MyState { async fn initialize(modules: &mut Modules) -> anyhow::Result { modules.add_battery(SimpleCamController); // modules.graphics_settings_mut().bloom.activated = false; Ok(MyState) } fn update(&mut self, modules: &mut Modules) -> Flow { let transforms: Vec = (0..1000) .map(|e| { let y = e / 30; let x = e % 30; Transform::from(vec3(x as f32, (e as f32 * 0.01).sin(), y as f32)) }) .collect(); ColorMeshRenderer::draw_cubes(&transforms, None); Gizmos::draw_xyz(); UiRectRenderer::draw_rect(UiRect { pos: Rect::new([300., 200.0], [300., 200.0]), uv: Default::default(), color: Color::RED, border_radius: [30.0, 0.0, 20.0, 0.0], }); let to_camera = { let mut t = Transform::default(); t.rotate_y(-PI / 2.0); t }; WorldRectRenderer::draw_3d_rect( UiRect { pos: Rect::new([300., 200.0], [300., 200.0]), uv: Default::default(), color: Color::RED, border_radius: [30.0, 0.0, 20.0, 0.0], }, to_camera, ); TextRenderer::draw_ui_text(DrawText { text: "Hello".into(), pos: vec2(500.0, 10.0), font_texture_size: 60.0, font_layout_size: 60.0, max_width: None, color: Color::BLUE, }); TextRenderer::draw_3d_text( DrawText { text: "Hello".into(), pos: vec2(0.0, 0.0), font_texture_size: 120.0, font_layout_size: 120.0, max_width: None, color: Color::BLUE, }, to_camera, ); Flow::Continue } } fn main() { App::::run().unwrap(); }