use bevy::prelude::*; use bevy::window::{CursorMoved}; fn main() { App::build() .insert_resource(WindowDescriptor { title: "Scaling Example".to_string(), width: 640.0, height: 480.0, scale_factor_override: Some(1.0), ..Default::default() }) .add_plugins(DefaultPlugins) .init_resource::() .add_startup_system(setup.system()) .add_system(button_system.system()) .add_system(mouse_event_system.system()) .run(); } struct ButtonMaterials { normal: Handle, hovered: Handle, pressed: Handle, } impl FromWorld for ButtonMaterials { fn from_world(world: &mut World) -> Self { let mut materials = world.get_resource_mut::>().unwrap(); ButtonMaterials { normal: materials.add(Color::rgb(0.15, 0.15, 0.15).into()), hovered: materials.add(Color::rgb(0.25, 0.25, 0.25).into()), pressed: materials.add(Color::rgb(0.35, 0.75, 0.35).into()), } } } fn button_system( button_materials: Res, mut interaction_query: Query< (&Interaction, &mut Handle, &Children), (Changed, With