# Bevy Interact 2D **Work in progress** Plugin library for the Bevy game engine to easily add mouse interactions to 2d games. Can help you with: - Hovering - Clicking - Dragging & Droppings ![Progress bar example](examples/trash_cleanup.gif) ## Using Interact2D Add the interaction plugin, or use the `InteractionDebugPlugin` instead when debugging. ```rust App::build() .add_plugin(InteractionPlugin) ``` Spawn a camera with an interaction source with a number of interaction groups. ```rust commands .spawn_bundle(OrthographicCameraBundle::new_2d()) .insert(InteractionSource { groups: vec![Group(0), Group(1)], ..Default::default() }) ``` Spawn an interactable entity ```rust commands .spawn() .insert(Interactable { groups: vec![Group(0)], bounding_box: (Vec2::new(0., 0.), Vec2::new(10., 10.)), ..Default::default() }) ``` Now you can create a system that uses the interaction state ```rust fn interaction_system( mouse_button_input: Res>, interaction_state: Res, ) { if !mouse_button_input.just_released(MouseButton::Left) { return; } for (entity, coords) in interaction_state.get_group(Group(0)).iter() { // Do something } } ```