bevy_gamepad 0.1.1

Apple Game Controller Framework Integration plugin for Bevy
use bevy::{prelude::*, utils::HashMap};
use game_controller::{AppleGameController, AppleGameControllerEvent};

mod game_controller;

pub struct GamepadPlugin;

impl Plugin for GamepadPlugin {
    fn build(&self, app: &mut App) {
        app.init_resource::<GamepadIndex>();
        app.add_event::<AppleGameControllerEvent>();
        app.add_systems(First, AppleGameController::gamepad_connection_system);
        app.add_systems(
            PreUpdate,
            AppleGameController::poll_system.after(AppleGameController::gamepad_connection_system),
        );

        AppleGameController::setup(app);
    }
}

pub(crate) type GamepadId = usize;

#[derive(Resource, Default)]
pub(crate) struct GamepadIndex {
    gamepad: HashMap<GamepadId, Entity>,
}