(
mut scroll_events: EventReader<MouseWheel>,
cursor: Res<Cursor>,
mut materials: ResMut<Assets<CanvasMaterial>>,
query: Query<(&CanvasParams, &CanvasMaterialHandle)>,
)
| 223 | } |
| 224 | |
| 225 | pub fn zoom_canvas_system( |
| 226 | mut scroll_events: EventReader<MouseWheel>, |
| 227 | cursor: Res<Cursor>, |
| 228 | mut materials: ResMut<Assets<CanvasMaterial>>, |
| 229 | query: Query<(&CanvasParams, &CanvasMaterialHandle)>, |
| 230 | ) { |
| 231 | for event in scroll_events.read() { |
| 232 | for (canvas_params, material_handle) in query.iter() { |
| 233 | if canvas_params.within_rect(cursor.world_position) { |
| 234 | if let Some(material) = materials.get_mut(&material_handle.0) { |
| 235 | let zoom_factor = 1.0 + event.y * 0.1; |
| 236 | let center = (material.bound_up + material.bound_lo) / 2.0; |
| 237 | |
| 238 | let half_range = (material.bound_up - material.bound_lo) / 2.0; |
| 239 | let new_half_range = half_range / zoom_factor; |
| 240 | |
| 241 | material.bound_lo = center - new_half_range; |
| 242 | material.bound_up = center + new_half_range; |
| 243 | material.zoom *= zoom_factor; |
| 244 | } |
| 245 | } |
| 246 | } |
| 247 | } |
| 248 | } |
| 249 | |
| 250 | pub fn update_tick_labels_system( |
| 251 | mut commands: Commands, |
nothing calls this directly
no test coverage detected