BlackPhlox/bevy_dolly

Use generic system or system param for ergonomic rig lookup

Closed this issue · 0 comments

Generic System:

//App
.add_system(dolly_update_system::<MyRig>)

//Setup
commands
        .spawn()
      //.insert(Some Transform)
        .insert(Rig::builder(/*...*/))
        .insert(MyRig);

//Generic System
fn dolly_update_system<T: Component>(mut query: Query<Rig, With<T>>) {
    for rig in query.iter() {
        rig.update()
    }
}

System Param:

//WIP

#[derive(SystemParam)]
struct CameraUpdater<'w, 's> {
    players: Query<'w, 's, &'static Player>,
    count: ResMut<'w, PlayerCount>,
}

impl<'w, 's> CameraUpdater<'w, 's> {
    fn update(&mut self) {
		self.update()
    }
}

/// The [`SystemParam`] can be used directly in a system argument.
fn update_camera(mut query: Query<Transform, With<Camera3D>>, mut cam_updater: CameraUpdater) {
    let t = cam_updater.update();
	for cams in query.iter() {
        cams = t;
    }
}