1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
use crate::*; pub struct Grid { pub base: Rectangle, pub i: usize, pub x: usize, pub y: usize, } impl Iterator for Grid { type Item = Rectangle; fn next(&mut self) -> Option<Self::Item> { let x = self.x; let y = self.y; let i = self.i; if i < x * y { let w = self.base.width(); let h = self.base.height(); let mut r = self.base.clone(); r.pos.x = self.base.pos.x + w * (i % x) as f32; r.pos.y = self.base.pos.y + h * (i / x) as f32; self.i += 1; Some(r) } else { None } } }