MCPcopy Create free account
hub / github.com/eliotbo/bevy_plot / zoom_canvas_system

Function zoom_canvas_system

bevy_plot2/src/canvas.rs:225–248  ·  view source on GitHub ↗
(
    mut scroll_events: EventReader<MouseWheel>,
    cursor: Res<Cursor>,
    mut materials: ResMut<Assets<CanvasMaterial>>,
    query: Query<(&CanvasParams, &CanvasMaterialHandle)>,
)

Source from the content-addressed store, hash-verified

223}
224
225pub 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
250pub fn update_tick_labels_system(
251 mut commands: Commands,

Callers

nothing calls this directly

Calls 2

get_mutMethod · 0.80
within_rectMethod · 0.45

Tested by

no test coverage detected