#![allow(clippy::new_without_default)] use std::iter::repeat; use flax::*; use glam::*; use itertools::Itertools; use pretty_assertions::assert_eq; component! { transform: Mat4, position: Vec3, rotation: Vec3, velocity: Vec3, } #[test] pub fn simple_iter() { let mut world = World::new(); let mut batch = BatchSpawn::new(1000); batch .set(transform(), repeat(Mat4::from_scale(Vec3::ONE))) .unwrap(); batch .set(position(), (0..).map(|i| Vec3::Y * i as f32)) .unwrap(); batch.set(rotation(), repeat(Vec3::X)).unwrap(); batch.set(velocity(), repeat(Vec3::X)).unwrap(); batch.spawn(&mut world); let mut query = Query::new((velocity(), position().as_mut())); for (&velocity, position) in &mut query.borrow(&world) { *position += velocity * 0.5 } assert_eq!( Query::new(position().copied()).collect_vec(&world), (0..1000) .map(|i| Vec3::Y * i as f32 + Vec3::X * 0.5) .collect_vec() ); }